首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从服务器检索信息后在google地图上显示openinfowindowhtml

从服务器检索信息后在google地图上显示openinfowindowhtml
EN

Stack Overflow用户
提问于 2009-09-18 11:41:18
回答 3查看 2.3K关注 0票数 2

我有一个谷歌地图在我的网站和附加到它的事件处理程序的moveend

代码语言:javascript
复制
   GEvent.addListener(map, "moveend", function() 
    {
            map.clearovrelays();
            GetLayerDataFromServer(); //it set the markers again on the map  according the map position
    });

我也有点击标记的事件处理程序

代码语言:javascript
复制
GEvent.addListener(marker, 'click', function()
    { 
        marker.openInfoWindowHtml('this is the data');
    });

我的问题是

当用户按下地图上的一个标记时,它会打开相关标记的openInfoWindowHtml。

它还会将地图移动到该标记位置。然后它会触发事件

代码语言:javascript
复制
map.moveend

在map.moveend事件中,我清除了地图上的所有标记,并根据地图的新位置重新加载它们。

结果是,当用户点击标记时,它会打开第二次他的indoWindowHtml,它会清除地图并再次加载标记,而不会显示所单击标记的indoWindowHtml。

我的问题是,我应该怎么做才能显示infoWindowHtml?

EN

回答 3

Stack Overflow用户

发布于 2009-09-18 12:07:38

您可以设置一个标志,指示用户是否单击了某个标记,如果是,则不清除地图。

代码语言:javascript
复制
var marker_clicked = false;

GEvent.addListener(map, "moveend", function() 
{
    if(!marker_clicked)
    {
        map.clearovrelays();
        GetLayerDataFromServer(); //it set the markers again on the map  acording the map position
    }
    marker_clicked = false;
});

GEvent.addListener(marker, 'click', function()
{
    marker_clicked = true;
    marker.openInfoWindowHtml('this is the data');
});
票数 1
EN

Stack Overflow用户

发布于 2009-09-21 20:22:12

一种可能的替代策略是使用{suppressMapPan:true}打开您的信息窗口,这会告诉地图在信息窗口打开时不要平移。这样,您就知道任何地图移动都是用户实际的地图移动。

注意:{suppressMapPan:true}没有文档记录,因此它可能会在未来的某个版本中消失。

票数 0
EN

Stack Overflow用户

发布于 2009-09-21 20:34:11

另一种策略是编写

代码语言:javascript
复制
GEvent.addListener(marker, 'click', function()
    { 
        var iwAnchor = marker.getIcon().infoWindowAnchor;
        var iconAnchor = marker.getIcon().iconAnchor;
        var offset = new GSize(iwAnchor.x-iconAnchor.x,iwAnchor.y-iconAnchor.y);
        map.openInfoWindowHtml(marker.getLatLng(),'this is the data',{pixelOffset:offset});
    });

然后,不是调用clearOverlays(),而是一个接一个地遍历您的标记,移除它们。

通过打开地图上的信息窗口而不是标记,当删除标记时,它不会自动关闭。

信息窗口现在是一个覆盖,所以clearOverlays删除了它,所以你不能使用clearOverlays。循环遍历标记,逐个删除它们,这听起来效率很低,但clearOverlays在内部执行了一个非常类似的循环。

上面的iconAnchor计算只是将信息窗口定位在使用marker.openInfowindowHtml时的相同位置,而不是在标记的底部。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1444021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档