Мне всегда кажется, что примеры решений этой проблемы только находят центр текущей карты на экране, как будто это всегда то место, куда вы собираетесь щелкнуть! В любом случае, я написал эту маленькую функцию, чтобы получить фактическое местоположение пикселя, которое вы щелкнули по экрану, и вернуть для этого VELatLong. Пока что это выглядит довольно точно (хотя я вижу это как один большой, ужасный хак - но сейчас у нас нет выбора).
Он принимает VEPixel в качестве входных данных, которые представляют собой координаты x и y того места, где вы щелкнули по карте. Вы можете легко получить это, передав событие мыши в обработчик onclick для карты.
function getBirdseyeViewLatLong(vePixel)
{
var be = map.GetBirdseyeScene();
var centrePixel = be.LatLongToPixel(map.GetCenter(), map.GetZoomLevel());
var currentPixelWidth = be.GetWidth();
var currentPixelHeight = be.GetHeight();
var mapDiv = document.getElementById("map");
var mapDivPixelWidth = mapDiv.offsetWidth;
var mapDivPixelHeight = mapDiv.offsetHeight;
var xScreenPixel = centrePixel.x - (mapDivPixelWidth / 2) + vePixel.x;
var yScreenPixel = centrePixel.y - (mapDivPixelHeight / 2) + vePixel.y;
var position = be.PixelToLatLong(new VEPixel(xScreenPixel, yScreenPixel), map.GetZoomLevel())
return (new _xy1).Decode(position);
}