从标记打开灯箱

“我的地图”会动态显示带有商店的标记。标记会打开一个弹出窗口,在该弹出窗口中,我需要一个按钮来打开一个大灯箱,其中包含有关每个商店的个人信息。

当我单击弹出窗口中的按钮时,弹出窗口消失。如何获得按钮的点击?

灯箱使用jQuery,因此可以使用jQuery解决方案,但这不是必需的

class open_layer_map {

  constructor(json) {
    this.center = {};
    this.standplatz_data = [];
  }

  /*
   * Get data from Server via json and create map
   */
  make_map_from_json() {
    var DBO = new DB();

    var data = {get_json_from_class: 'ajax',func: 'standorte'};
    DBO.get_json_from(data).then(function (json) {

      const json_object = jQuery.parseJSON(json);

      olm.make_map(json_object);

    },function (error) {
      console.log('Error in ajax call',error);
    });
  }

  /*
   * Full Map plus listener
   */
  make_map(json_object){


    $('#mymap,#popup').html('');
    $('#map_container').append("<div id='popup'></div>");

    this.setcenter(json_object.center_map_lng,json_object.center_map_lat);
    this.set_zoom(json_object.zoom);
    this.create_map();
    this.create_markers(json_object,this);
    this.create_popup(this);



    /*
    * Click Handler Marker
    */
    this.map.on('click',function (evt) {
      olm.element.innerHTML = '';

      var feature = olm.map.forEachFeatureAtPixel(evt.pixel,function (feature,layer) {
        return feature;
      });

      if (feature) {

        const mmid = feature.mmid;

        var coord = feature.getGeometry().getcoordinates();
        var props = feature.getProperties();
        var info = "<h2>bvnvb</h2>";
        // Offset the popup so it points at the middle of the marker not the tip
        olm.popup.setOffset([0,-22]);
        olm.popup.setPosition(evt.coordinate);
        
        var json_lb = {func:'google_map_route',height:'600',width:900,max_width:900,close_LB:'X',navigate_from: '',navigate_to:'52.314719989584795,7.872352543544025'};

        json_lb = JSON.stringify(json_lb)
        
        olm.element.innerHTML = +
          '<h3>' + olm.standplatz_data[mmid].market_name + '</h3>' +
          '<p>' + olm.standplatz_data[mmid].street + olm.standplatz_data[mmid].nr + '</p>' +
          '<p>' + olm.standplatz_data[mmid].city + '</p><br>' +
          '<p>' + olm.standplatz_data[mmid].firstname + olm.standplatz_data[mmid].lastname + '</p>' +
          '<p>' + olm.standplatz_data[mmid].mobile + '</p>' +
          "<div class='hierhin_navigieren even open_LB bglb cursor' json='json_lb' onClick='alert(8);LB()'><span class='glyphicon glyphicon-envelope'></span> HIERHIN NAVIGIEREN</div>";
      }

    });

  }


  /*
   * Set center
   */
  setcenter(lng,lat) {
    this.center.lng = parseFloat(lng);
    this.center.lat = parseFloat(lat);
  }

  /*
   * Set zoom
   */
  set_zoom(zoom) {
    this.zoom = zoom;
  }

  create_map() {
    /*
     * Baselayer,whatever that is
     */
    var baselayer = new ol.layer.Tile({
      source: new ol.source.OSM()
    });
    var layer1 = new ol.layer.Tile({});

    this.map = new ol.Map({
      layers: [baselayer,layer1],controls: ol.control.defaults().extend([
        new ol.control.ScaleLine({
          units: 'metric'
        }),new ol.control.FullScreen()
      ]),target: 'mymap',view: new ol.View({
        center: ol.proj.fromLonLat([this.center.lng,this.center.lat]),zoom: this.zoom //Initial zoom Level
      })
    });

  }


  /*
   * Create Markers
   */
  create_markers(json_object,MAP){

    json_object.ROWS.forEach(function (item) {

      var marker;
      marker = new ol.Feature({
        geometry: new ol.geom.Point(
          ol.proj.fromLonLat([parseFloat(item.len),parseFloat(item.lat)])
        ),// Cordinates of New York's City Hall
      });

      marker.setStyle(new ol.style.Style({
        image: new ol.style.Icon(({
          color: '#ffcd46',crossOrigin: 'anonymous',src: '/files/grillplatzfinder/gmaps_icon_grillmobil.png'
        }))
      }));

      marker.mmid = item.id;

      MAP.standplatz_data[item.id] = item;

      MAP.vectorSource = new ol.source.Vector({
        features: [marker]
      });
      MAP.markerVectorLayer = new ol.layer.Vector({
        source: MAP.vectorSource,});
      MAP.map.addLayer(MAP.markerVectorLayer);
    });
  }


  /*
   * Create ONE popup
   */
  create_popup(MAP){
    MAP.element = document.getElementById('popup');
    MAP.popup = new ol.Overlay({
      element: MAP.element,positioning: 'bottom-center',stopEvent: false
    });
    MAP.map.addOverlay(MAP.popup);
  }
}

wxcool87 回答:从标记打开灯箱

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3063847.html

大家都在问