2015-10-06 3 views
0

Я пытаюсь создать вогнутый многоугольник, получив клики пользователей на карте. Я могу создать выпуклые многоугольники просто отлично. Но когда я пытаюсь создать вогнутый полигон я должен нажать на полигоне сами дают мне следующую ошибку:Bing Maps tryPixelToLocation on Polygon

e.target.tryPixelToLocation is not a function

Позвольте мне доработать. Пользователь нажимает на карту, и на карте отображается вывод, чтобы показать, где они только что щелкнули. Они нажимают еще два раза, и теперь они имеют треугольник, нарисованный на карте. Когда они пытаются щелкнуть внутри этого треугольника, чтобы нарисовать четвертую точку, создав вогнутый многоугольник, они получают вышеуказанную ошибку.

код я использую ниже

function GetMap(sender, args) { 
    map = new Microsoft.Maps.Map(document.getElementById("mapDiv"), { 
     credentials: "XXXXX", 
     enableSearchLogo: false, 
     enableClickableLogo: false, 
     disableBirdseye: true 
    }); 
    map.setView({ 
     zoom: 17, 
     center: new Microsoft.Maps.Location($('#startLatitude').val(), $('#startLongitude').val()), 
     mapTypeId: Microsoft.Maps.MapTypeId.aerial, 
     labelOverlay: Microsoft.Maps.LabelOverlay.visible 
    }); 
    Microsoft.Maps.Events.addHandler(map, 'click', getUserClick); 
} 

function getUserClick(e) { 
    alert(e.targetType); // <--- When this is 'Polygon' we get the error 
    if (e.mouseMoved === false && e.isPrimary === true) { 
     var p = new Microsoft.Maps.Point(e.getX(), e.getY()); 
     var t = e.target.tryPixelToLocation(p); 
     var l = new Microsoft.Maps.Location(t.latitude, t.longitude); 

     // Clear and draw polygon with new point //     
    } 
} 

Как я могу получить широту/долготу щелчка, когда targetType является многоугольник?

ответ

1

Когда событие click находится в классе Polygon, используйте map.tryPixelToLocation, поскольку класс многоугольника не имеет этой функции.

+0

Из того, что я могу сказать, и из того, что показало тестирование, нет никакой переменной, называемой 'map' в рамках этой функции. – ChrisStillwell

+0

Переменная карты должна быть доступна, поскольку она не является локальной переменной (без нее слева). Это означало бы, что это глобальная переменная или, по крайней мере, в той же области, что и функция getUserClick. – rbrundritt

+0

Хорошо, я понимаю, о чем вы говорите. Он не был настроен как глобальный, но устанавливал его как глобальный, а затем выполнял то, что вы предлагали. – ChrisStillwell