簡體   English   中英

當標記在Google Maps V3的外部視圖中時,InfoWindow無法通過鏈接正確打開

[英]InfoWindow doesn't open correctly with link when marker is outside view on Google Maps V3

我用標記聚集在Google Maps上的地圖制作了地圖。 制造商有一個監聽器,用於設置縮放比例,然后將地圖居中,然后打開一個信息窗口。

在for循環中,我制作了一個列表,其中包含指向每個看起來像這樣的標記的鏈接

<a href="javascript:google.maps.event.trigger(markers['+i+'],\'click\');">' + item.nombre + '</a>

如果我單擊地圖上的標記,則沒有問題:地圖居中並顯示信息窗口。

問題是,如果我按列表中的鏈接:如果制造商未在地圖上顯示,則信息窗口打開不正確(位置錯誤且圖標重疊),並且地圖未居中(地圖甚至不顯示)標記的正確位置)。
像這樣
奇怪的是,如果我在顯示標記的實際位置的位置縮小地圖,則將InfoWindow正確地設置在正確的標記上,並且再次按下相同的鏈接也沒有問題,就像第二幅圖像一樣。
沒問題

這是jsfiddle ,如果我單擊Playa Maqui Lodge ,然后使用Firefox 43單擊任何其他鏈接,則可能會重現該錯誤。

那么,我想念什么? 為什么地圖沒有以鏈接為中心?

標記要先“放大”,然后再對其進行“單擊”,然后才將其添加到地圖。 縮放比例必須高於markerClusterer的maxZoom。

可以將markerClusterer maxZoom設置為15,或者更改代碼以將其放大到更接近標記。

google.maps.event.addListener(marker, 'click', function() {
  infowindow.close();
  map.setZoom(21);
  map.setCenter(this.getPosition());
  infowindow.setContent(this.html);
  infowindow.open(map, this);
});

概念證明

看起來使用自定義信息窗口計算錨點存在問題(由於您未提供自定義標記,所以我之前沒有看到過)。 如果您不使用InfoWindow.open(map, anchor)語法並手動設置InfoWindow的pixelOffsetposition ,則此方法有效。

var infowindow = new google.maps.InfoWindow({pixelOffset:new google.maps.Size(0,-35)});

google.maps.event.addListener(marker, 'click', function() {
  infowindow.close();
  map.setZoom(16);
  map.setCenter(this.getPosition());
  infowindow.setContent(this.html);
  infowindow.setPosition(this.getPosition());
  infowindow.open(map);
});

更新了概念證明小提琴(帶有自定義標記)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM