2012-04-11 84 views
4

我目前正在了解这些地图。现在我想创建一个方法来更新我的图钉,如果我已经有一个。Ajax Bing地图版本7 - 移动和删除图钉 - 初学者的教程

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

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) 
} 

回答

4

要将图钉,setLocation()确实需要使用的功能。你是否试图从地图上的事件处理程序调用setLocation?如果是这种情况,可能事件处理程序没有正确设置,因此永远不会调用它。在

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

要在行动中看到这一点,头向Ajax Bing Maps v7 interactive SDK:但是,如果你已经定义了一个图钉(用变量名myPushpin),并将其插入到地图上,然后执行后续的代码将其移动,通过放置不同的坐标,在屏幕下方中心修改蓝色代码,点击Run按钮,看图钉移动。

要删除已添加到地图中的图钉,您需要将其从添加到地图的EntityCollection中移除。例如,如果你简单地插入图钉到yourmap.entities,你这是怎么删除它:

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

或者,你可以直接将其删除不使用索引:

yourmap.entities.remove(myPushpin); 

UPDATE: 要在用户点击图钉时删除图钉,您必须首先识别单击事件处理程序中单击的图钉。图钉可以传递到您的单击处理MouseEventArgs对象的目标属性来获得:

Microsoft.Maps.Events.addHandler(pushpin, 'click', function (mouseEvent) { 
    var pushPinThatWasClicked = mouseEvent.target; 
    // Do whatever you want with pushPinThatWasClicked 
}); 
+0

谢谢你,这么帮助我的朋友。我可以问你另一个问题吗,你能告诉我如何点击一个图钉并删除它吗?我怎么知道,一旦我点击它,我可以删除它?在这种情况下,用户创建他的推针,所以我不能简单地说明删除(mypushpin) – test 2012-04-11 21:13:40

+1

@test确定看到我更新的答案 – 2012-04-11 21:25:57

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); 
     } 
    } 
} 
+0

这个作品的男人,谢谢! – 2018-01-19 03:50:00