Google Maps API - 刷新XML标记

时间:2012-06-22 14:30:26

标签: javascript jquery google-maps

我对V2 api非常熟悉,但是自从我深入研究任何JavaScript以来已经有一段时间了。

我正在使用这里的XML示例:http://gmaps-samples-v3.googlecode.com/svn/trunk/xmlparsing/将我用PHP生成的标记加载到地图上。该文件是jqueryget.html,到目前为止一直很好。

当我想刷新标记时会出现问题。

代码部分在这里:

google.load("maps", "3",  {other_params:"sensor=false"});
google.load("jquery", "1.3.2");

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

jQuery.get("data.xml", {}, function(data) {
  jQuery(data).find("marker").each(function() {
    var marker = jQuery(this);
    var latlng = new google.maps.LatLng(parseFloat(marker.attr("lat")),
                                parseFloat(marker.attr("lng")));
    var marker = new google.maps.Marker({position: latlng, map: map});
 });
});
}

google.setOnLoadCallback(initialize);

我想将从初始化函数加载标记的部分隔离到我可以在点击时调用的函数,但是我似乎无法弄清楚如何去做。

任何建议都非常感谢

1 个答案:

答案 0 :(得分:1)

map变量设置为全局变量。将jQuery get方法调用移动到单独的函数:

var map;

function initialize() {
  ...

  map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

}

//Call this function from the click event
function createMarkers() {

  jQuery.get("data.xml", {}, function(data) {
    jQuery(data).find("marker").each(function() {
      var marker = jQuery(this);
      var latlng = new google.maps.LatLng(parseFloat(marker.attr("lat")),
                                parseFloat(marker.attr("lng")));
      var marker = new google.maps.Marker({position: latlng, map: map});
   });
  });

}

google.setOnLoadCallback(initialize);