Ajax Bing Maps 7 版本 - 移动和删除推钉 - 初学者教程

4
我正在学习这些地图。现在我想创建一个方法,如果我已经有了一个标记,它可以更新我的推送针。
a. 我尝试使用setLocation(newLocation),但不幸的是,当我这样做时,我的客户端代码甚至没有被执行(我认为代码语法不正确,但chrome没有给出错误)。
b. 然后我尝试学习如何删除它并创建另一个,但我无法从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)
}
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 
});

谢谢你的帮助,我的朋友。我可以问你另一个问题吗?你能告诉我如何点击一个推钉并将其删除吗?我怎么知道一旦我点击它,我就可以删除它?在这种情况下,用户创建了他自己的推钉,所以我不能简单地声明remove(mypushpin)。 - test

3
以下函数可以从地图中删除所有图钉:
//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);  
      }
   } 
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接