0

マップ ポイントのカスタム XML 構造を作成しました。構造は以下のコードのようになります。ポイントを読み込んで、クリックしたときにポップアップウィンドウと特定のマーカーアイコンを使用して、それに応じてマップに配置したいと考えています。助けていただければ幸いです。

MapPoints.xml

<MapPoints>
<MapPoint PointID="1">
    <LocationName></LocationName>
    <LocationAddress></LocationAddress>
    <LocationURL></LocationURL>
    <LocationExt></LocationExt>
    <LocationFax></LocationFax>
    <LocationLat></LocationLat>
    <LocationLong></LocationLong>
    <LocationMarker></LocationMarker>
</MapPoint>
<MapPoint PointID="2">
    <LocationName></LocationName>
    <LocationAddress></LocationAddress>
    <LocationURL></LocationURL>
    <LocationExt></LocationExt>
    <LocationFax></LocationFax>
    <LocationLat></LocationLat>
    <LocationLong></LocationLong>
    <LocationMarker></LocationMarker>
</MapPoint>
<MapPoint PointID="3">
    <LocationName></LocationName>
    <LocationAddress></LocationAddress>
    <LocationURL></LocationURL>
    <LocationExt></LocationExt>
    <LocationFax></LocationFax>
    <LocationLat></LocationLat>
    <LocationLong></LocationLong>
    <LocationMarker></LocationMarker>
</MapPoint>
<MapPoint PointID="4">
    <LocationName></LocationName>
    <LocationAddress></LocationAddress>
    <LocationURL></LocationURL>
    <LocationExt></LocationExt>
    <LocationFax></LocationFax>
    <LocationLat></LocationLat>
    <LocationLong></LocationLong>
    <LocationMarker></LocationMarker>
</MapPoint>
</MapPoints>
4

2 に答える 2

0

jqueryを使用します。HTML ドキュメントの head に、次の行を追加します。

<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>

ここで、jQuery ajax 呼び出しをローカル XML ファイルに使用します。

        //pulls in the xml
        $.ajax({
        type: "GET",
            url: "MapPoints.xml",
            dataType: "xml",
            success: function(xml) {
                $(xml).find('MapPoint').each(function(){
                    var lat = $.trim(this.LocationLat);
                    var lng = $.trim(this.LocationLng);

                    //use the same method to extract your other data
                    var mappoint = new google.maps.LatLng(lng,lat);

                    //now create the marker and set it to your map
                    var marker = new google.maps.Marker({
                     position:mappoint,
                     map:map,
                     title:'Your Marker Title',
                     icon:null
                    });

                });

            }
            });
于 2012-08-15T17:36:16.373 に答える
0

属性を使用して「Mike Williams Google Maps API v2 チュートリアル」形式で xml を解析する例はたくさんあります

「カスタム」形式を使用するには、次の行を置き換える必要があります (「マーカー」ではなく「MapPoint」を探すため)。

var markers = xmlDoc.documentElement.getElementsByTagName("marker");

そしてこれらの行:

      var lat = parseFloat(markers[i].getAttribute("lat"));
      var lng = parseFloat(markers[i].getAttribute("lng"));
      var point = new google.maps.LatLng(lat,lng);
      var html = markers[i].getAttribute("html");
      var label = markers[i].getAttribute("label");
      // create the marker
      var marker = createMarker(point,label,html);

xml から要素のコンテンツを解析するコードを使用します。

要素のコンテンツを取得するには、次のようにする必要があります。

var lat = parseFloat(nodeValue(markers[i].getElementsByTagName("LocationLat")[0]));

nodeValue (geoxml3 から借用) は次のとおりです。

//nodeValue: Extract the text value of a DOM node, with leading and trailing whitespace trimmed
geoXML3.nodeValue = function(node) {
  var retStr="";
  if (!node) {
    return '';
  }
   if(node.nodeType==3||node.nodeType==4||node.nodeType==2){
      retStr+=node.nodeValue;
   }else if(node.nodeType==1||node.nodeType==9||node.nodeType==11){
      for(var i=0;i<node.childNodes.length;++i){
         retStr+=arguments.callee(node.childNodes[i]);
      }
   }
   return retStr;
};
于 2012-08-15T15:55:10.210 に答える