jQuery.each 覆盖帖子

jQuery.each overwrites posts

我在 Pimcore 后端使用地址。地址转到地理编码器,它将用于从地址中获取纬度和经度。在此之后,lon 和 lat 存储在后端 (Pimcore)。这很好用。

下一步是给出所有地址,以便它们显示在前端的地图上。设置标记并显示 POI 的地址。我实现了一个 link 滚动到地图,将缩放设置为 16 并以 POI 为中心。

我的问题是只显示最后一个 POI,无论我点击哪个地址 link(它滚动到地图并放大..但总是显示最后一个 POI)。这让我觉得我的 jQuery.each 以某种方式覆盖了所有点,所以只留下最后一个点。如果我 console.log 纬度和经度点适合并且适合地址。

也许我监督了一些事情,或者我错过了一些在这个职能中至关重要的特定部分。我希望这对您有意义,如果有任何问题或者我不具体,请告诉我,我会解释更多。此致,丹尼尔

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;
};

问题出在您创建信息窗口时。一些 Google 地图如何始终获得对最后 marker.

的引用

如果您查看此 Google 地图示例 https://developers.google.com/maps/documentation/javascript/examples/event-closure

Google 尝试在函数中执行 google.maps.event.addListener(marker, 'click', function() 以避免这种错误引用问题;如果您从函数中复制代码,替换函数调用,则此示例将不起作用。看看这个问题发生的例子。

http://jsfiddle.net/Lqshut95/

希望对您有所帮助。