【问题标题】:How to get lat/lon of a mouse click with Bing Maps AJAX Control v7如何使用 Bing Maps AJAX Control v7 获取鼠标点击的纬度/经度
【发布时间】:2012-01-25 07:51:10
【问题描述】:

我正在使用最新版本的 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}

标签: javascript bing-maps


【解决方案1】:

好的,成功了。这是您感兴趣的代码:

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()仅在目标为图钉、信息框等时有效,实际地图点击不同。

【讨论】:

  • 不...对不起Uncaught TypeError: Cannot call method 'getLocation' of undefined
  • 我更新了答案以使用 e.target 而不是 e.entity。看看这是否有效。我现在无法对此进行测试。
  • 不...对不起...Uncaught TypeError: Object #<tr> has no method 'getLocation'
  • 我似乎让它在地图本身上工作,与你的说法相反。但是,单击我的图钉之一会导致错误(未捕获的 TypeError:Object [object Object] 没有方法“tryPixelToLocation”)。我没有在 infobox 上测试过,因为我不知道那是什么。
  • e.target.tryPixelToLocation(point) 返回一个 Microsoft.Maps.Location 对象,因此无需从中获取纬度和经度来创建新对象。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-13
  • 1970-01-01
  • 2012-06-08
  • 2016-04-07
  • 1970-01-01
  • 2018-12-29
相关资源
最近更新 更多