私は、xmlファイルに基づいてGoogleマップを生成するためのasp.netコントロールを構築してきました。マップとポップアップウィンドウ(infoWindows)が機能しています。残念ながら、何らかの理由で、XMLファイル内のカスタム属性を使用して各マーカーの情報ウィンドウにデータを入力することができません。次の呼び出しを行うと、null値が返されます。varname =markers [i] .getAttribute( "name");
このコードをいくつかの異なる方法で書き直しましたが、それでも値にアクセスできません。私はそれがxmlに存在することを知っているので、グーグルマップapi v3とjavascriptを介したxmlの解析についての高度な知識を持った誰かがここにいて、これの根底に到達するのを手伝ってくれるかもしれないと思っていました。以下にレンダリングされたhtmlと、xmlファイルpartnerLocations.xmlの内容を含めました。
注:私はグーグルによって提供され、ここで利用可能なgoogleUtils.jsクラスを利用しました:http://gmaps-samples-v3.googlecode.com/svn/trunk/xmlparsing/util.js
tests.aspx(コントロールが実装されているテストページ)レンダリングされた出力:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"> </script>
<script type="text/javascript" src="/includes/js/googleUtils.js"></script>
<script type="text/javascript">
google.maps.event.addDomListener(window, 'load', function () {
var map = new google.maps.Map(document.getElementById('map_canvas'), {
zoom: 3,
center: new google.maps.LatLng(52.5,-117.5),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var infoWindow = new google.maps.InfoWindow;
google.maps.event.addListener(map, 'click', function () {
infoWindow.close();
});
downloadUrl("/includes/xml/partnerLocations.xml", function (data) {
var markers = data.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
var latlng = new google.maps.LatLng(parseFloat(markers[i].getAttribute("lat")),
parseFloat(markers[i].getAttribute("lng")));
var name = markers[i].getAttribute("name");
var windowContents = "<h3>" + name + "</h3>";
var marker = new google.maps.Marker({ position: latlng, map: map });
bindInfoWindow(marker, map, infoWindow, windowContents);
}
});
function bindInfoWindow(marker, map, infowindow, html) {
google.maps.event.addListener(marker, 'click', function () {
infowindow.setContent(html);
infowindow.open(map, marker);
});
}
});
</script>
<div id="map_canvas" style="width: 700px; height: 500px">
</div>
</html>
PartnerLocations.xml:
<?xml version="1.0" encoding="UTF-8"?>
<markers>
<marker lat="37.401220" lng="-122.120604" name="PartnerB" address="StreetAddress" description="Thisisourpartner..."/>
<marker lat="37.413320" lng="-122.125604" name="PartnerB" address="StreetAddress" description="Thisisourpartner..."/>
<marker lat="37.433480" lng="-122.139062" name="PartnerC" address="StreetAddress" description="Thisisourpartner..."/>
<marker lat="37.445427" lng="-122.162307" name="PartnerD" address="StreetAddress" description="Thisisourpartner..."/>
</markers>