ошибка при попытке привязать карту openlayers к событию клика - PullRequest
0 голосов
/ 06 июня 2019

Я хочу получить широту / долготу от объекта карты openlayers при нажатии на карту.Я пытался сделать это с помощью Map.on ('click', function (e) {})

, но возникает ошибка.Из консоли я записал следующее:

"Uncaught TypeError: map.on не является функцией"


код:

  <script src="http://www.openlayers.org/api/OpenLayers.js"></script>
  <script>

    var map = new OpenLayers.Map("mapdiv");
    map.addLayer(new OpenLayers.Layer.OSM());

    var lonLat = new OpenLayers.LonLat( 114.5931866, -3.3171685 )
          .transform(
            new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984
            map.getProjectionObject() // to Spherical Mercator Projection
          );

    var zoom=16;

    var markers = new OpenLayers.Layer.Markers( "Markers" );
    map.addLayer(markers);

    markers.addMarker(new OpenLayers.Marker(lonLat));
    map.setCenter (lonLat, zoom);


    map.on('click',function(evt){
      var coords = ol.proj.toLonLat(evt.coordinate);
      var lat = coords[1];
      var lon = coords[0];
      var loctxt = "latitude : " + lat + " Longitude: "+ lon;
      alert(loctxt);
    });


  </script>

</body></html>

Я ожидал, что на карте кликов появится предупреждение о латлонге

1 Ответ

0 голосов
/ 06 июня 2019

Ошибка, которой вы поделились, является типичной ошибкой js, которая возникает при доступе к свойству, например функции.Две вещи:

  1. Извлеките версию openlayers, соответствующую подходу map.on, из которого вы скопировали код.В противном случае, и если вы намеренно не используете старую версию, попробуйте ссылаться на последнюю библиотеку OpenLayers .Похоже, что актив, загруженный <script src="http://www.openlayers.org/api/OpenLayers.js"></script>, это OpenLayers 2.13.1, начиная с 2013 года.

  2. в 5.3.0, при использовании элемента управления MousePosition будут предоставлены соответствующие значения широты / долготы для демонстрация положения мыши предоставлена ​​на сайте документации OpenLayers.Их пример показывает, как нацеливать элементы на изменение положения мыши, вы можете использовать эту информацию во время события щелчка.Ниже приведен пример, который я привел, который при добавлении в демо-позицию мыши щелкает лог / долг на консоли:

    document.getElementById("map").addEventListener('click', function(e) { console.log(document.getElementById("mouse-position").childNodes[0].innerHTML) });

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...