如何使用Bing Maps AJAX控件v7获取鼠标点击的经纬度

13

我正在使用最新版本的API(v7),希望能够在鼠标单击时添加一个图钉...

var mapSettings = {
    'credentials': 'myCredentials',
    'mapTypeId': Microsoft.Maps.MapTypeId.road,
    'enableSearchLogo': false,
    'showMapTypeSelector': false,
    'showScalebar': false
};

var $map = $('#map');
var map = new Microsoft.Maps.Map($map.get(0), mapSettings);
Microsoft.Maps.Events.addHandler(map, 'click', function (e) {
    var latitude = ?
    var longitude = ?
    var location = new Microsoft.Maps.Location(latitude, longitude);
    var pushpin = new Microsoft.Maps.Pushpin(location, {
        'draggable': true
    });
    map.entites.push(pushpin);
});

如您所见,我在点击处理程序中卡住了:如何获取点击的经纬度?


对于那些想知道的人,在Bing Maps v8中,位置悬挂在回调参数(e)上。 e.location n {latitude: 39.29711299974974, longitude: -111.57935390625, altitude: 0, altitudeReference: -1} - RyBolt
1个回答

19

好的,搞定了。这里是你感兴趣的代码片段:

if (e.targetType == "map") {
  var point = new Microsoft.Maps.Point(e.getX(), e.getY());
  var loc = e.target.tryPixelToLocation(point);
  var location = new Microsoft.Maps.Location(loc.latitude, loc.longitude);
  ......
}

e.target.getLocation()只在目标为pushpin、infobox等时有效。地图上的实际点击事件是不同的。


抱歉, Uncaught TypeError:Cannot call method 'getLocation' of undefined - user57508
我更新了答案,使用 e.target 替代 e.entity。看看是否有效。我现在无法测试。 - binar
抱歉,出现了错误... Uncaught TypeError: Object #<tr> has no method 'getLocation' - user57508
我似乎已经在地图上使它工作了,这与您的说法相反。但是,单击我的推钉之一会导致错误(Uncaught TypeError: Object [object Object] has no method 'tryPixelToLocation')。由于我不知道那是什么,所以我还没有在信息框上测试它。 - Konrad Viltersten
e.target.tryPixelToLocation(point) 返回一个 Microsoft.Maps.Location 对象,因此无需从中获取纬度和经度来创建新对象。 - mricci

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