我在Pimcore后端使用地址。地址转到地址解析器,用于从地址中获取lat和lon。在此之后,lon和lat存储在后端(Pimcore)中。这非常有效。
下一步是提供所有地址,以便它们显示在前端的地图上。设置标记并显示POI的地址。我实现了一个滚动到地图的链接,将缩放设置为16并以POI为中心。
我的问题是,只显示最后一个POI,无论我点击什么地址链接(它滚动到地图并放大......但总是显示最后一个poi)。这让我觉得我jQuery.each
以某种方式覆盖了所有的点,所以只留下了最后一点。如果我console.log
他们的lat和lon点适合并且适合地址。
也许我有一些事情需要监督,或者我错过了一些在这个功能中至关重要的特定部分。我希望这对你有意义,如果有一些问题,或者我是非特异性让我知道,我会解释更多。问候,丹尼尔
cw.map.prototype.generateMarkersFromvcard = function () {
var cwMap = this;
jQuery('.vcard').each(function (k, v) {
var id = jQuery(v).data('markerid');
var vCard = v;
// TODO: only last address is shown
var lat = jQuery('.latitude [title]', v).attr('title');
var lon = jQuery('.longitude [title]', v).attr('title');
console.log('latitude ' + lat + ', longitude ' + lon);
// Fallback if lat and lon
if (lat && lon) {
var point = new google.maps.LatLng(lat, lon);
var properties = {
position: point,
map: map,
icon: " ",
labelContent: '<i class="icon-pin map-pin"></i>',
labelAnchor: new google.maps.Point(24, 48),
labelClass: "labels" // the CSS class for the label
};
// setting the marker to the map
var marker = new MarkerWithLabel(properties);
cwMap.infowindow(marker, jQuery('.infowindow', v).html());
markers[id] = marker;
}
});
return this;
};
答案 0 :(得分:1)
问题在于您创建infowindow时。 Google地图总是会获得上次marker
的引用。
如果您查看此Google地图示例https://developers.google.com/maps/documentation/javascript/examples/event-closure
Google尝试在函数中执行google.maps.event.addListener(marker, 'click', function()
以避免此错误引用问题;如果从函数中复制代码,则替换函数调用,此示例将不起作用。请看这个问题发生的例子。
希望它有所帮助。