Gmap.Net Marker位置不正确,但当地图缩放时,标记会移到正确的位置

时间:2015-07-21 16:47:52

标签: c# winforms google-maps gmap.net

我有一个带有 Gmap.Net 控制器的 Windows窗体应用程序,我想要做的是根据提供位置的外部源添加标记。问题是,当我添加标记时,最初是在不正确的位置绘制的,但是在我缩小后,它会移到正确的位置。所以这就是我到目前为止所得到的:

我的地图控制器声明位于巴拿马巴拿马。

private void button2_Click(object sender, EventArgs e)
{    
    //Layer count is just a variable to add new OverLays with different names
    var markersOverlay = new GMapOverlay("markers" + layerCount);

    //Marker far away in Quebec, Canada just to check my point in discussion        
    var marker = new GMarkerGoogle(new PointLatLng(58.0032, -79.4957), GMarkerGoogleType.red_small);

    markersOverlay.Markers.Add(marker);
    gmap.Overlays.Add(markersOverlay);
    layerCount++;
}

因此,当我按下按钮时,我得到的是这个(请记住它在巴拿马设置的地图位置和加拿大的标记):

First picture without zooming. Source: OC

当我缩小时,标记会在加拿大的正确位置。

Second picture without zooming. Source: OC

为什么我的标记最初是在巴拿马绘制的?

PD :我已经检查过此question,但它无法解决我的问题,因为我需要添加多个标记,myMap.UpdateMarkerLocalPosition(marker)不是解决方案我。

2 个答案:

答案 0 :(得分:6)

这是因为您要将标记添加到尚未添加到地图叠加层的叠加层中。尝试按如下方式切换语句的顺序:

gmap.Overlays.Add(markersOverlay);
markersOverlay.Markers.Add(marker);

答案 1 :(得分:1)

在lat处添加第一个标记,lon = 0,0。 你也可以通过将其标记图像设置为1x1像素透明png图像使该标记不可见。 标记的第一个元素做了这种错误的放置。