gpt4 book ai didi

javascript - Ng-map - 标记上的信息窗口有时不会出现

转载 作者:行者123 更新时间:2023-11-30 21:08:18 24 4
gpt4 key购买 nike

我正在使用 ng-map 指令来显示 map 。 map 上有标记,只要鼠标悬停在标记上,就会显示一个信息窗口。然而,有时信息窗口不会出现。

除此之外,我无法确定正在发生的事情的任何模式,因为问题每次都发生在不同的标记上。我正在将数据输出到信息窗口,但问题似乎与“数据相关”无关,因为所选位置的所有数据在问题发生时似乎都是正确的。

我有一个在鼠标悬停时调用的 showInfo 方法,如下所示:

showInfo(event, loc, infoWindowTemplate, map, mapsController) {
  • loc - 点击位置的数据
  • infoWindowTemplate - 要使用的信息窗口模板(这对于特定 map 总是相同的,但是这是可配置的,所以如果我显示移动 map ,我使用一个信息窗口模板,如果我显示桌面 map ,我用的是不同的)
  • map - 对 Controller 上 NgMap 对象的引用
  • mapsController - Controller 本身(我强烈怀疑这是一种糟糕的代码味道 - 这是我想出的在鼠标悬停后获取对 Controller 的引用的最简单方法)

这是方法的主体:

        map.getMap(mapsController.mapId).then(function (myMap) {

var selectedMarker = myMap.markers["L: " + loc.position[0] + ", " + loc.position[1]];
selectedMarker.locationInfo = loc;

console.log("about to show infowindow - infoWindowTemplate = " + infoWindowTemplate);
// console output = "cached-myTemplate.html"

myMap.showInfoWindow(infoWindowTemplate, selectedMarker);

selectedMarker 肯定是指正确的标记对象。我的模板如下所示:

<script id="cached-myTemplate.html" type="text/ng-template">
<a class="map-location__link" href="/locations/{{anchor.locationInfo.locationId}}" target="_blank">
<img src="{{anchor.locationInfo.locationImageThumbnail}}" />
</a>
</script>

问题似乎是调用“showInfoWindow”以某种方式间歇性地失败(尽管控制台中没有错误)。任何关于可能导致问题的原因或我可以做些什么来诊断它的想法的评论或答案将不胜感激!

最佳答案

我发现这是一个时间问题。延迟调用 showInfoWindow 的“转弯”(通过添加短超时)解决了这个问题:

map.getMap(mapsController.mapId).then(function (myMap) {

....

this.$timeout(function () {
dealmap.showInfoWindow(infoWindowTemplate, selectedMarker);
}, 100)

}.bind(this));

关于javascript - Ng-map - 标记上的信息窗口有时不会出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46402918/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com