【问题标题】:Markers in google maps谷歌地图中的标记
【发布时间】:2009-09-07 12:57:16
【问题描述】:

我目前正在使用以下 javascript 加载地图。

  google.load("maps", "2.x");

  // Call this function when the page has been loaded
  function initialize() {

    var map = new google.maps.Map2(document.getElementById("map"));
    map.setCenter(new google.maps.LatLng(52,-3), 13);

    var point = new google.maps.LatLng(52,-3);
    var marker = new google.maps.Marker(point, {draggable: true});


    map.addOverlay(marker);

    google.maps.Event.addListener(marker, "dragend", function(latlng) {
    marker.openInfoWindowHtml("Dragged to <br>" + latlng);
    });    
  }

google.setOnLoadCallback(initialize);

稍后,我想在用户输入 (lat,lon) 对后向地图添加其他标记如何访问我在函数 initialize 中创建的 map 变量?

【问题讨论】:

    标签: javascript google-maps


    【解决方案1】:

    只需在初始化函数之外初始化 map 变量:

    google.load("maps", "2.x");
    
    var map;
    
    // Call this function when the page has been loaded
    function initialize() {
    
      map = new google.maps.Map2(document.getElementById("map"));
      map.setCenter(new google.maps.LatLng(52,-3), 13);
    
      var point = new google.maps.LatLng(52,-3);
      var marker = new google.maps.Marker(point, {draggable: true});
    
      map.addOverlay(marker);
    
      google.maps.Event.addListener(marker, "dragend", function(latlng) {
        marker.openInfoWindowHtml("Dragged to <br>" + latlng);
      });    
    }
    
    google.setOnLoadCallback(initialize);
    
    //Now you can access the map variable anywhere in your code.
    

    【讨论】:

    • 尽管使用全局变量,但封装map 是一种更好的方法,例如在模块模式中。
    【解决方案2】:

    从未使用过 Google 地图,但尝试全局创建它,并在每次要使用时将其传递给初始化。

    google.load("maps", "2.x");
    
    var map = new google.maps.Map2(document.getElementById("map"));
    
    function initialize(map,lat,lon) {
    
        map.setCenter(new google.maps.LatLng(lat,lon), 13);
    
        var point = new google.maps.LatLng(lat,lon);
        var marker = new google.maps.Marker(point, {draggable: true});
    
    
        map.addOverlay(marker);
    
        google.maps.Event.addListener(marker, "dragend", function(latlng) {
        marker.openInfoWindowHtml("Dragged to <br>" + latlng);
        });
    
        return map
    }
    
    google.setOnLoadCallback(initialize(map,lat,lon));
    

    【讨论】:

    • 上述方法第一次可能行不通,但希望你能明白。
    • 这是正确的想法,但在页面加载之前您无法实际实例化地图对象 - 您需要在初始化函数中执行此操作。
    猜你喜欢
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    • 2015-10-29
    • 2018-04-19
    • 2011-08-24
    • 1970-01-01
    相关资源
    最近更新 更多