6

我有一个带有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++;
}

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

第一张没有缩放的照片。 资料来源:OC

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

第二张图片没有放大。 资料来源:OC

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

PD:我已经检查了这个问题,但它并没有解决我的问题,因为我需要添加超过 1 个标记并且myMap.UpdateMarkerLocalPosition(marker)不是我的解决方案。

4

2 回答 2

10

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

gmap.Overlays.Add(markersOverlay);
markersOverlay.Markers.Add(marker);
于 2015-07-22T08:33:11.737 回答
1

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

于 2017-02-20T07:01:35.810 回答