アプリ版:「スタンプのみでお礼する」機能のリリースについて

Google mapでJavascriptを勉强しています。
参考URL http://code.google.com/apis/maps/articles/phpsql …

function createMarker(point, name, address, type) {
var marker = new GMarker(point, customIcons[type]);
var html = "<b>" + name + "</b> <br/>" + address;
GEvent.addListener(marker, 'click', function() {
marker.openInfoWindowHtml(html);
});
return marker;

以上のファンクションのaddressの部分にhtml のテーブルを含むデータを挿入して、Google mapのバルーン表示で表示したいのですが、実際にはタグも含め、テキスト表示されてしまいます。

いろいろ検索してみると、innerHTMLなどがヒットするのですが、成功出来ていません。Javascript 変数内に入れたhtmlソースを、htmlとして表示するには何が足りないのでしょうか?

お力添えをお願いします。

A 回答 (4件)

申し訳ないですが、意味がよくわかりません。


javascriptでDBはアクセスできないですよね。
PHPの話ですよね ?
<?php
$html=html_entity_decode($address);
?>
ですか??
    • good
    • 0
この回答へのお礼

> PHPの話ですよね ?
のお一言で、ハッと気付かされました。

仰る通りに、PHPの部分のコードを覗いて、

前 echo 'address="' . parseToXML($row['address']) . '" '; (parseToXMLは独自ファンクション)
後 echo 'address="' . htmlspecialchars($row['address']) . '" ';

以下のように変更したら、希望通りに動きました。

基本が全然分かっていないのを思い知らされました。
これからしっかり勉强したいと思います。ご親切に教授有難うございました。

お礼日時:2009/12/22 14:09

検討はずれかもしれませんが...



<script type="text/javascript" charset="utf-8">
- - - - - - - - - -
<?php
$connection=mysql_connect (localhost, $username, $password);
mysql_select_db($database, $connection);
$result = mysql_query("SELECT * FROM markers WHERE 1");
while ($row = @mysql_fetch_assoc($result)){
$name=$row['name'];
$address=$row['address'];
$address=html_entity_decode($address);
$lat=$row['lat'];
$lng=$row['lng'];
$type=$row['type'];
}
print <<<DOCEND
//Javascript
function createMarker() {
var point=new GLatLng($lat,$lng);
var marker = new GMarker(point, customIcons[$type]);
var html = "<b>" + $name + "</b><br/>" + $address;
GEvent.addListener(marker, 'click', function() {
marker.openInfoWindowHtml(html);
});
return marker;
}
DOCEND;
?>
- - - - - - - -
var marker=createMarker();
map.addOverlay(marker);
- - - - - - - -
</script>
    • good
    • 0
この回答へのお礼

あー、お礼と報告をさせて頂いている間に、参考コードまで…申し訳ありません。
せっかく書いていただいたコードが全部理解出来るように必ずしたいと思います。
重ね重ね有難うございました。

お礼日時:2009/12/22 14:12

No.1補足です。

質問を読み直してみて、
テーブルってもしかして、PHP/MySQLのDBのテーブルの事で、
nameとかaddressはその列名のことですかねえ。
サンプルどおり、DBからXMLを出力するPHPを準備した上で、
GDownloadUrlでXMLを取り込んだ上で、

function createMarker(point, name, address, type) {
var marker = new GMarker(point, customIcons[type]);
var html = "<b>" + name + "</b> <br/>" + address;
GEvent.addListener(marker, 'click', function() {
marker.openInfoWindowHtml(html);
});
return marker;
}
としても、うまくいかないのですか?
    • good
    • 0
この回答へのお礼

回答有難うございます。

私の質問が不明瞭で申し訳ありません。

やろうとしている事は、
MySQLのDBのフィールド address に<table> </table>を含む文字列を入れ、
以上のファンクションで取り出した際に、excelのような格子付で表示したいのです。

私のふたしかな理解では、var html = "<b>" + name + "</b> <br/>" + address;
で読み出した際に、"<table><tr><td>1</td></tr><tr><td>2</td></tr></table>"
のように、" " 付になってしまっているような気がします。

お礼日時:2009/12/22 12:51

marker.openInfoWindow(DOM要素)


又は
marker.bindInfoWindow(DOM要素)
を使います。

var content=document.createElement('div');
content.innerHTML='<b>' + name + '</b><br/>';
content.append.appendChild(address);
marker.openInfoWindow(content);
    • good
    • 0
この回答へのお礼

回答有難うございます。

content.append.appendChild(address);
の部分を理解出来るように勉强したいと思います。

お礼日時:2009/12/22 12:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!