как получить координаты из openstreetmap - PullRequest
0 голосов
/ 11 апреля 2019

Я пытаюсь получить координаты, когда нажимаю на карту, чтобы вставить поле адреса.Я не знал, что поместить в свою функцию, чтобы получить информацию о местоположении!

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<script type="text/javascript" 
src="http://openlayers.org/api/2.11/OpenLayers.js"></script>
<script type="text/javascript" >
var myMap;

function loadOpenLayers(){  

myMap = new OpenLayers.Map("mymap", {});

var wms = new OpenLayers.Layer.WMS(
"OpenLayers WMS",
"http://vmap0.tiles.osgeo.org/wms/vmap0",
{layers: "basic"},
{});

myMap.addLayer(wms);

myMap.setCenter(new OpenLayers.LonLat(-122.349243, 47.651743));

myMap.zoomTo(6);   
myMap.on('click', function(event) {
 document.getElementById("demo").innerHTML = "Hello World";

});
} 

</script>
</head>
<body onload="loadOpenLayers();">
<div id="mymap" style="width: 620px; height: 460px; border: 1px solid;">
<p id="demo">
</div>

</body>
</html>

Ответы [ 2 ]

0 голосов
/ 11 апреля 2019

Вы смешиваете код OpenLayers 2 и OpenLayers 3+.myMap.on('click', function(event) { - это OL3 +.Если вы должны использовать OpenLayers 2, вам нужно

document.getElementById("mymap").onclick = function(event) {
  var lonlat = myMap.getLonLatFromPixel(new OpenLayers.Pixel(event.clientX, event.clientY));
  document.getElementById("demo").innerHTML = lonlat.lon + ' ' + lonlat.lat;
};

, но если вы начинаете новый проект, было бы намного лучше начать снова, используя последние версии OpenLayers 5.

0 голосов
/ 11 апреля 2019

Эта вещь уже должна возвращать событие Map, которое имеет координату в вашей проекции. Попробуйте что-то вроде этого

myMap.on('click', function(event) {
   console.log(event.coordinate);
});

и проверьте, правильно ли вы получаете координаты в консоли.

https://openlayers.org/en/latest/apidoc/module-ol_Map-Map.html#getEventCoordinate

...