将地图对象传递给javascript函数

时间:2015-08-13 13:13:40

标签: javascript google-maps

为了在按下按钮时在Google地图的中心点添加偏移量,我尝试这个功能:

function offsetCenter(map, marker) {

var worldCoordinateCenter = map.getProjection().fromLatLngToPoint(marker.getPosition());
var pixelOffset = new google.maps.Point((100/scale) || 0,(0/scale) ||0)

var worldCoordinateNewCenter = new google.maps.Point(
    worldCoordinateCenter.x - pixelOffset.x,
    worldCoordinateCenter.y + pixelOffset.y
);

var newCenter = map.getProjection().fromPointToLatLng(worldCoordinateNewCenter);

map.setCenter(newCenter);

}


});

我从infoWindows调用了这个函数,其中定义了map和marker:

       (function(marker, data) {
              google.maps.event.addListener(marker, "click", function() {

            info = '<h4>' + data.nombre + '</h4><h4>'+ data.offerta+'</h4><h4>'+ data.horario+'</h4><a href='+data.web+'><h4>Web</h4></a>'
+ '<input type="button" class = "launchConfirm" onclick="offsetCenter(\''+map+'\', \''+marker+'\');" value='Reset center'></input>'  //this is the button inside the infowindos to re-set the map center with an offset 
        ;

        infoWindow.setContent(info);   
        infoWindow.open(map, marker);

        map.setCenter(marker.getPosition());   //center the map to marker
        map.setZoom(16);                       //zoom to marker

         });
      }

但是offsetCenter函数中没有定义标记和地图对象。 如何将地图对象和标记传递给该函数?

1 个答案:

答案 0 :(得分:0)

  1. 确保您的地图&#39;变量和标记管理器在范围&gt; =函数范围内。这样你就不需要传递地图了。

  2. 使用标记管理器管理您的制作者。然后,您可以为链接上的某个属性添加唯一ID。当点击进入时,您可以访问该对象以获取ID,这将允许您从管理器中检索制造商。所以代码看起来像这样:

  3. 信息窗口内容(为简洁起见缩短):

    var info = '<h4>' + data.nombre + '</h4>'<input type="button" data-markerId="' + SomeMarkerManager.getMarkerId() '" onclick="offsetCenter(this);" value='Reset center'></input>'  
    
    
    var offsetCenter = function (element) {
      // get the marker Id
      var markerId = $(element).attr("data-marker-id");
    
      // use the markerId to find your marker
      var marker = SomeMarkerManager.getMarkerById(markerId);
    
      // now you have access to your map and the clicked marker
    }
    

    P.S。 标记管理器不在本答案的范围内。只需搜索谷歌地图标记管理器。