Ajax Bing Maps版本7 - 移动和删除push pin - 初学者的教程

时间:2012-04-11 20:12:03

标签: javascript bing-maps

我目前正在了解这些地图。现在我想创建一个方法来更新我的推针,如果我已经有一个。

一个。我尝试使用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)
}

2 个答案:

答案 0 :(得分: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 interactive SDK,通过输入不同的坐标修改屏幕中下部的蓝色代码,点击“运行”按钮,然后查看图钉移动。

要删除已添加到地图的图钉,您需要将其从添加它的EntityCollection中删除。例如,如果您只是将图钉插入map.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 
});

答案 1 :(得分: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);  
      }
   } 
}