0

私はV2APIにかなり精通していましたが、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);

初期化関数からマーカーをロードするセクションを、クリックで呼び出すことができる関数に分離したいのですが、その方法がわからないようです。

アドバイスをいただければ幸いです

4

1 に答える 1

1

map変数をグローバル変数として設定します。jQuerygetメソッド呼び出しを別の関数に移動します。

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);
于 2012-06-22T22:27:22.147 に答える