4

我目前正在学习这些地图。现在我想创建一个方法来更新我的图钉(如果我已经有图钉的话)。

一种。我尝试使用 setLocation(newLocation) 但不幸的是,当我这样做时,我的客户端代码甚至没有到达(我认为代码语法不正确,但在 chrome 上没有给出错误)

湾。然后我尝试学习如何删除它并创建另一个,但我无法从http://msdn.microsoft.com/en-us/library/gg427610.aspx找到任何资源- 也许我搜索得不够好。

谁能为我提供一些关于如何移动图钉以及如何删除图钉的指南?非常非常感谢大家

var loc = new Microsoft.Maps.Location(lat, lon);

var pin = new Microsoft.Maps.Pushpin(loc);

编辑:部分答案

卸下图钉:

if (pin != null)
{
    map.entities.remove(pin)
}
4

2 回答 2

4

移动图钉,setLocation()确实是您需要使用的功能。您是否尝试从地图上的事件处理程序调用 setLocation?如果是这种情况,则事件处理程序可能没有正确设置,因此它永远不会被调用。但是,如果您已经定义了一个图钉(变量名为 myPushpin)并将其插入到地图中,则执行以下代码将移动它:

// Move pushpin to "38.0", "-97.0"
var loc = new Microsoft.Maps.Location(38.0, -97.0);
myPushpin.setLocation(loc);

要查看实际效果,请前往Ajax Bing Maps v7 交互式 SDK,通过放置不同的坐标修改屏幕中央下方的蓝色代码,点击运行按钮并查看图钉移动。

要删除已添加到地图的图钉,您需要将其从添加它的 EntityCollection 中删除。例如,如果您只是将 Pushpin 插入到 yourmap.entities 中,您可以通过以下方式将其移除:

var index = yourmap.entities.indexOf(myPushpin);
if (index != -1) {
    yourmap.entities.removeAt(index);
}

或者您可以直接删除它而不使用索引:

yourmap.entities.remove(myPushpin);

更新:要在用户单击图钉时删除它,您基本上必须首先识别在单击事件处理程序中单击的图钉。图钉可以从传递给单击处理程序的MouseEventArgs对象的目标属性中获取:

Microsoft.Maps.Events.addHandler(pushpin, 'click', function (mouseEvent) {
    var pushPinThatWasClicked = mouseEvent.target;
    // Do whatever you want with pushPinThatWasClicked 
});
于 2012-04-11T20:55:04.757 回答
1

以下函数可以从地图中删除所有图钉:

//remove all the pushpins
function deletePushpin()
{
  for(var i=map.entities.getLength()-1;i>=0;i--) 
  {
      var pushpin= map.entities.get(i); 
      if (pushpin instanceof Microsoft.Maps.Pushpin) { 
        map.entities.remove(pushpin);  
      }
   } 
}
于 2017-11-14T13:48:46.317 回答