Как добавить информационное окно при нажатии на маркер, используя открытый слой в ионной 3? - PullRequest
0 голосов
/ 07 марта 2019

У меня есть приложение ionic 3, которое использует открытую карту слоев, где я уже разместил маркеры.Теперь мне нужно нажать на маркеры, которые покажут мне некоторое содержание о кликнувшем маркере.Я искал через Интернет, но могу найти только примеры jquery.Я не хочу включать JQuery в мое приложение.Пожалуйста, помогите мне с этим.

Это весь мой файл .ts, где я показал карту и добавил маркер

this.api.get_someapi()
  .subscribe(data => {
    this.recent_event_data = data;
    console.log('recent event data', this.recent_event_data);
     var length = this.recent_event_data.length;
     for(var i = 0; i < length; i++){
      var lati = this.recent_event_data[i].latitude;
      var longi = this.recent_event_data[i].longitude;
      this.flash_type = this.recent_event_data[i].flash_type;
        for(var j = 0; j< this.latitude.length; j++){
          console.log('loop long',this.longitude[j]);
          console.log('loop lat', this.latitude[j]);
          var marker =  new ol.Feature({
                      geometry: new ol.geom.Point(
                        ol.proj.fromLonLat([parseFloat(this.longitude[j]), parseFloat(this.latitude[j])])),
                    }); 

                marker.setStyle(new ol.style.Style({
                      image: new ol.style.Icon(({
                          // color: '#ffcd46',
                          crossOrigin: 'anonymous',
                          src: 'https://www.google.com/intl/en_us/mapfiles/ms/micons/blue-dot.png'
                          // src:'/assets/imgs/blue-dot.png'
                      }))
                  }));

                var vectorSource = new ol.source.Vector({
                  features: [marker]
                });   

                var markerVectorLayer = new ol.layer.Vector({
                  source: vectorSource,
                });
                map.addLayer(markerVectorLayer);
        }

    }
});
this.loading.dismiss();  
// Creating District Vector Source
var district = new ol.layer.Vector({
    renderMode: 'image',
    // title:"District",
    visible:true,
    // baseLayer: true,
    source: new ol.source.Vector({
        url: 'somemap',
        format: new ol.format.GeoJSON()
    })
});

// OSM Layer
var osm=new ol.layer.Tile({
    source: new ol.source.OSM(),
    // title:'Map',
    // type:'base',
    // baseLayer: true,
    visible:true,
});



// Adding the District and OSM layer to the map
var map = new ol.Map({
    layers: [osm, district],
    renderer: 'canvas',
    target: 'map', // Rendering to a particular ID
    view: new ol.View({
        center: ol.proj.transform([84.3995, 20.9517], 'EPSG:4326', 'EPSG:3857'),
        zoom: 6.3
    }),
    controls: ol.control.defaults().extend([
      new ol.control.FullScreen()
    ]),
});

 var container = document.getElementById('popup');
  var content = document.getElementById('popup-content');
  var closer = document.getElementById('popup-closer');


  /**
   * Create an overlay to anchor the popup to the map.
   */
  var overlay = new ol.Overlay({
    element: container,
    autoPan: true,

  });

closer.onclick = function() {
    overlay.setPosition(undefined);
    closer.blur();
    return false;}

map.on("singleclick", function(evt) {
    //var coordinate = evt.coordinate;
    //var hdms = ol.coordinate.toStringHDMS(ol.proj.transform(
        //coordinate, 'EPSG:3857', 'EPSG:4326'));

    content.innerHTML = '<p>You clicked here:</p><code>';
    //overlay.setPosition(coordinate);
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...