2012-04-05 27 views
0

嘿再次精细人民映射自定义标记图像!不同的谷歌使用XML

我会在顶部开始,我的XML文件!我已经奠定了一个像这样的XML:

<?xml version="1.0" encoding="UTF-8"?> 
<markers> 
<watersource> 
    <marker name="Large private dam - Plenty of water. Access from whatever Rd." lat="-35.844630" lng="146.313416" type="1"/> 
</watersource> 
<watersource> 
    <marker name="Small water tank with fire fighting fittings - Plenty of water. Access from whatever Rd." lat="-35.844630" lng="146.313416" type="1"/> 
    </watersource> 
</markers> 

然后,我有这样的PHP文件中读取XML并显示在谷歌地图标记(不相干的东西剥离出来):

<?php 

{ 
?> 

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 
<script type="text/javascript" src="util.js"></script> 
<script type="text/javascript"> 
    var infowindow; 
    var map; 

    function initialize() { 
    var myLatlng = new google.maps.LatLng(-37.855677, 145.316076); 
    var myOptions = { 
     zoom: 13, 
     center: myLatlng, 
    disableDefaultUI: true, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    } 
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 


    downloadUrl("watersourcedata.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 marker = createMarker(markers[i].getAttribute("name"), latlng); 
     } 
    }); 
     } 


var image = 'images/watersource.png'; 


    function createMarker(name, latlng) { 
    var marker = new google.maps.Marker({position: latlng, map: map, icon: image}); 
google.maps.event.addListener(marker, "click", function() { 
    if (infowindow) infowindow.close(); 
    infowindow = new google.maps.InfoWindow({content: name}); 
    infowindow.open(map, marker); 
    }); 
    return marker; 
    } 


    </script> 
    </head> 
    <body onload="initialize()"> 


    <FONT SIZE="2">NOTE: Water Source Map Is Under Construction.<BR> 
    This map once completed will allow brigades to make and maintain a map of major water sources like dams, wells, tanks ect. in their local areas.<BR> 

    <BR> 
    Watersource Legend:<BR> 
    A creek, dam, river, pond ect.(drafting needed) = <img src='images/watersource.png'> <BR> 
    A water tank, pump ect (drafting NOT needed) = <img src='images/waterwellpump.png'> 
<BR> 
</FONT> 

<div id="map_canvas" style="width:950px; height:450px;"></div> 


<? 
} 

?> 

现在,这工作都很好,但在XML我有一个类型。类型1(watersource.png)和类型2(waterwellpump.png)。我需要做的是,如果它的XML显示地图标记的图像1在1型..类型2,标记图像2 ..我有点新本XML跳跃和我有点失落!如果有人能指出我的方向正确,我将非常感激! 谢谢!

回答

1

当你将信息发送给这样

createMarker(markers[i].getAttribute("name"), latlng, markers[i].getAttribute("type")); 

在你createMarker功能的变化,以决定选择哪个图像创建标记,发送图像类型。

function createMarker(name, latlng, type) { 
if(type == 1) 
    image = 'images/watersource.png'; 
else 
    image = 'images/waterwellpump.png'; 

var marker = new google.maps.Marker({position: latlng, map: map, icon: image}); 
google.maps.event.addListener(marker, "click", function() { 
if (infowindow) infowindow.close(); 
infowindow = new google.maps.InfoWindow({content: name}); 
infowindow.open(map, marker); 
}); 
return marker; 
} 
+0

真棒!像魅力一样工作!谢谢! – AdamK 2012-04-05 12:49:57

+0

欢迎您:) – 2012-04-05 12:50:26