0

私はGoogleマップを使用して、PHPスクリプトを呼び出してXML形式でKMLレイヤーを出力することにより、データベースからさまざまなデータレイヤーをプル(および切り替え)できるマップを作成しています。以下のコードを実行しても何も起こらず、コンソールエラーも発生しません。私のテストでは、XMLデータレイヤーが機能するのとまったく同じであるため、返されるXMLは健全であることがわかっています。

html

function downloadUrl(url,callback) {
        var request = window.ActiveXObject ?
        new ActiveXObject('Microsoft.XMLHTTP') :
        new XMLHttpRequest;

        request.onreadystatechange = function() {
            if (request.readyState == 4) {
                callback(request, request.status);
            }
        };

        request.open('GET', url, true);
        request.send(null);
    }

    $(document).ready(function() {
        $('.kml_item').toggle(
                function() {
                    $(this).animate({backgroundColor: '#ffffff'}, 200);
                    downloadUrl("SQL_map.php", function(data) {
                        var xml = data.responseXML;
                        var kmlxml = new google.maps.KmlLayer(xml);
                        kmlxml.setMap(the_Map);
                    });

SQL_map.phpの関連部分

header("Content-type: text/xml"); 
echo '<?xml version="1.0" encoding="UTF-8"?>
    <kml xmlns="http://earth.google.com/kml/2.1">
        <Document> 

        <Style id="a">
            <IconStyle>
                <Icon>
                           <href>http://maps.google.com/mapfiles/ms/icons/yellow-dot.png</href>
                </Icon>
            </IconStyle>
        </Style>';

// Iterate through the rows, printing XML nodes for each
while ($row = @mysql_fetch_assoc($result)){
// ADD TO XML DOCUMENT NODE
 echo '<Placemark><name>' . parseToXML($row['name']) . '</name><styleUrl>#a</styleUrl><point><coordinates>' . $row['lat'] . ',' . $row['lng'] . '</coordinates></point><description>' . parseToXML($row['name']) . '</description></Placemark>';
 }

  // End XML file
   echo '</Document>
   </kml>';

私がやろうとしていることのコード全体を教えてくれる人を必ずしも探しているわけではありませんが、本当の問題は、データを取得してマップに配置するこの方法が実現可能かどうかです。私は他のいくつかの方法を試しましたが、それぞれに問題があります。

4

1 に答える 1

0

エラーが発生または表示されない理由がわかりません。これは正しくありません。

downloadUrl("SQL_map.php", function(data) {
                    var xml = data.responseXML;
                    var kmlxml = new google.maps.KmlLayer(xml);
                    kmlxml.setMap(the_Map);

KmlLayerには、Googleのサーバーからアクセスできる公的にアクセス可能なURLが必要です。

KMLの複雑さによっては、geoxml3を使用して、そのparseKmlStringメソッドにKMLを含む文字列(responseXMLは含まない)を渡すことができる場合があります。

于 2012-10-17T00:14:05.150 に答える