久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

  • <small id='H7Wab'></small><noframes id='H7Wab'>

    <i id='H7Wab'><tr id='H7Wab'><dt id='H7Wab'><q id='H7Wab'><span id='H7Wab'><b id='H7Wab'><form id='H7Wab'><ins id='H7Wab'></ins><ul id='H7Wab'></ul><sub id='H7Wab'></sub></form><legend id='H7Wab'></legend><bdo id='H7Wab'><pre id='H7Wab'><center id='H7Wab'></center></pre></bdo></b><th id='H7Wab'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='H7Wab'><tfoot id='H7Wab'></tfoot><dl id='H7Wab'><fieldset id='H7Wab'></fieldset></dl></div>
    1. <tfoot id='H7Wab'></tfoot>

      • <bdo id='H7Wab'></bdo><ul id='H7Wab'></ul>
      <legend id='H7Wab'><style id='H7Wab'><dir id='H7Wab'><q id='H7Wab'></q></dir></style></legend>

      1. 如何從地圖外部與傳單標(biāo)記層進行交互?

        How to interact with leaflet marker layer from outside the map?(如何從地圖外部與傳單標(biāo)記層進行交互?)
        <i id='v4eZT'><tr id='v4eZT'><dt id='v4eZT'><q id='v4eZT'><span id='v4eZT'><b id='v4eZT'><form id='v4eZT'><ins id='v4eZT'></ins><ul id='v4eZT'></ul><sub id='v4eZT'></sub></form><legend id='v4eZT'></legend><bdo id='v4eZT'><pre id='v4eZT'><center id='v4eZT'></center></pre></bdo></b><th id='v4eZT'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='v4eZT'><tfoot id='v4eZT'></tfoot><dl id='v4eZT'><fieldset id='v4eZT'></fieldset></dl></div>

        • <bdo id='v4eZT'></bdo><ul id='v4eZT'></ul>

          <tfoot id='v4eZT'></tfoot>
              <tbody id='v4eZT'></tbody>
            <legend id='v4eZT'><style id='v4eZT'><dir id='v4eZT'><q id='v4eZT'></q></dir></style></legend>
            • <small id='v4eZT'></small><noframes id='v4eZT'>

                  本文介紹了如何從地圖外部與傳單標(biāo)記層進行交互?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

                  問題描述

                  限時送ChatGPT賬號..

                  我有一張傳單地圖,顯示公共藝術(shù)作品的點,從 GeoJSON 渲染.在地圖旁邊,我從相同的 GeoJSON 數(shù)據(jù)創(chuàng)建了一個片段列表,并且希望能夠單擊地圖外列表中的項目,并在地圖上顯示相關(guān)標(biāo)記的彈出窗口.

                  I have a leaflet map showing points for public art pieces, rendered from GeoJSON. Next to the map, I created a list of the pieces from the same GeoJSON data and want to be able to click on an item from the list outside of the map and have the related marker's popup come up on the map.

                  如何通過點擊事件將項目列表鏈接到它們各自的標(biāo)記?

                  How can I link the list of items to their respective markers through a click event?

                  我的 map.js 文件如下所示:

                  My map.js file looks like this:

                  var map;
                  var pointsLayer;
                  
                  $(document).ready(function () {
                      map = new L.Map('mapContainer');
                      var url = 'http://{s}.tiles.mapbox.com/v3/mapbox.mapbox-streets/{z}/{x}/{y}.png';
                      var copyright = 'Map data &copy; 2011 OpenStreetMap contributors, Imagery &copy; 2011 CloudMade';
                      var tileLayer = new L.TileLayer(url, {
                          attribution: copyright
                      });
                      var startPosition = new L.LatLng(41.883333, - 87.633333);
                      map.on('load', function (e) {
                          requestUpdatedPoints(e.target.getBounds())
                      });
                      map.setView(startPosition, 13).addLayer(tileLayer);
                      map.on('moveend', function (e) {
                          requestUpdatedPoints(e.target.getBounds())
                      })
                  });
                  
                  function requestUpdatedPoints(bounds) {
                      $.ajax({
                          type: 'GET',
                          url: '/SeeAll',
                          dataType: 'json',
                          data: JSON.stringify(bounds),
                          contentType: 'application/json; charset=utf-8',
                          success: function (result) {
                              parseNewPoints(result);
                              addToList(result)
                          },
                          error: function (req, status, error) {
                              alert('what happen? did you lose conn. to server ?')
                          }
                      })
                  }
                  
                  function addToList(data) {
                      for (var i = 0; i < data.features.length; i++) {
                          var art = data.features[i];
                          $('div#infoContainer').append('<a href="#" class="list-link" title="' + art.properties.descfin + '"><div class="info-list-item">' + '<div class="info-list-txt">' + '<div class="title">' + art.properties.wrknm + '</div>' + '<br />' + art.properties.location + '</div>' + '<div class="info-list-img">' + art.properties.img_src + '</div>' + '<br />' + '</div></a>')
                      }
                      $('a.list-link').click(function (e) {
                          alert('now you see what happens when you click a list item!');
                          e.preventDefault()
                      })
                  }
                  
                  function parseNewPoints(data) {
                      if (pointsLayer != undefined) {
                          map.removeLayer(pointsLayer)
                      }
                      pointsLayer = new L.GeoJSON();
                      var geojsonMarkerOptions = {
                          radius: 8,
                          fillColor: "#FF6788",
                          color: "YELLOW",
                          weight: 1,
                          opacity: 1,
                          fillOpacity: 0.5
                      };
                      L.geoJson(data, {
                          pointToLayer: function (feature, latlng) {
                              return L.circleMarker(latlng, geojsonMarkerOptions)
                          },
                          onEachFeature: function (feature, pointsLayer) {
                              pointsLayer.bindPopup(feature.properties.img_src + "<br />" + feature.properties.wrknm + "<br />" + feature.properties.artist + "<br />" + feature.properties.location + '<div class="description">' + feature.properties.descfin + '</div>')
                          }
                      }).addTo(map)
                  }
                  

                  推薦答案

                  Felix Kling 是對的,但我會稍微擴展他的評論......

                  Felix Kling is right but I'll expand on his comment a little bit...

                  由于 L.LayerGroup 和 L.FeatureGroup(從 L.GeoJSON 擴展而來)沒有檢索各個層的方法,您需要從 L.GeoJSON 擴展并添加這樣的方法,或者保留您自己的單獨映射從 GeoJSON 到 CircleMarker 的唯一 ID.

                  Since L.LayerGroup and L.FeatureGroup (which L.GeoJSON extends from) don't have methods to retrieve individual layers you will need to either extend from L.GeoJSON and add such a method or keep your own seperate mapping from unique ID to CircleMarker from GeoJSON.

                  GeoJSON 不需要唯一 ID,但我假設(shè)您的提要中的標(biāo)記具有稱為id"的唯一 ID 屬性.您需要將此唯一 ID 添加到用戶可以單擊的鏈接中,以便鏈接可以選擇地圖上的正確標(biāo)記.然后,您需要將 id 映射存儲到標(biāo)記,以便檢索標(biāo)記以在地圖上選擇它.

                  GeoJSON does not require a unique ID but I'll assume that markers in your feed have a unique ID attribute called "id". You will need to add this unique ID to the links that the user can click on so that the links can select the right marker on the map. Then you'll need to store a map of ids to markers in order to retrieve the marker to select it on the map.

                  markerMap = {}; // a global variable unless you extend L.GeoJSON
                  
                  // Add the marker id as a data item (called "data-artId") to the "a" element
                  function addToList(data) {
                      for (var i = 0; i < data.features.length; i++) {
                          var art = data.features[i];
                          $('div#infoContainer').append('<a href="#" class="list-link" data-artId="'+art.id+'" title="' + art.properties.descfin + '"><div class="info-list-item">' + '<div class="info-list-txt">' + '<div class="title">' + art.properties.wrknm + '</div>' + '<br />' + art.properties.location + '</div>' + '<div class="info-list-img">' + art.properties.img_src + '</div>' + '<br />' + '</div></a>')
                      }
                      $('a.list-link').click(function (e) {
                          alert('now you see what happens when you click a list item!');
                  
                          //Get the id of the element clicked
                          var artId = $(this).data( 'artId' );
                          var marker = markerMap[artId];
                  
                          //since you're using CircleMarkers the OpenPopup method requires
                          //a latlng so I'll just use the center of the circle
                          marker.openPopup(marker.getLatLng());
                          e.preventDefault()
                      })
                  }
                  

                  從服務(wù)器獲取數(shù)據(jù)時需要構(gòu)建markerMap.您的 pointToLayer 方法可以修改為:

                  You need to build the markerMap when you get the data from the server. Your pointToLayer method could be modified to do that:

                  L.geoJson(data, {
                      pointToLayer: function (feature, latlng) {
                        var marker = new L.CircleMarker( latlng, geojsonMarkerOptions );
                        markerMap[feature.id] = marker;
                        return marker;
                      },...
                  

                  這篇關(guān)于如何從地圖外部與傳單標(biāo)記層進行交互?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

                  【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請聯(lián)系我們刪除處理,感謝您的支持!

                  相關(guān)文檔推薦

                  Browserify, Babel 6, Gulp - Unexpected token on spread operator(Browserify,Babel 6,Gulp - 傳播運算符上的意外令牌)
                  Is it possible to pass a flag to Gulp to have it run tasks in different ways?(是否可以將標(biāo)志傳遞給 Gulp 以使其以不同的方式運行任務(wù)?)
                  Why do we need to install gulp globally and locally?(為什么我們需要在全局和本地安裝 gulp?)
                  How to run Gulp tasks sequentially one after the other(如何一個接一個地依次運行 Gulp 任務(wù))
                  Visual Studio 2015 crashes when opening Javascript files(打開 Javascript 文件時 Visual Studio 2015 崩潰)
                  Detect FLASH plugin crashes(檢測 FLASH 插件崩潰)
                1. <small id='02v7b'></small><noframes id='02v7b'>

                  <i id='02v7b'><tr id='02v7b'><dt id='02v7b'><q id='02v7b'><span id='02v7b'><b id='02v7b'><form id='02v7b'><ins id='02v7b'></ins><ul id='02v7b'></ul><sub id='02v7b'></sub></form><legend id='02v7b'></legend><bdo id='02v7b'><pre id='02v7b'><center id='02v7b'></center></pre></bdo></b><th id='02v7b'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='02v7b'><tfoot id='02v7b'></tfoot><dl id='02v7b'><fieldset id='02v7b'></fieldset></dl></div>
                    <tbody id='02v7b'></tbody>
                  <tfoot id='02v7b'></tfoot>
                2. <legend id='02v7b'><style id='02v7b'><dir id='02v7b'><q id='02v7b'></q></dir></style></legend>

                    • <bdo id='02v7b'></bdo><ul id='02v7b'></ul>
                          • 主站蜘蛛池模板: 亚洲毛片一区二区 | 亚洲97| 一区二区日韩 | 色综合桃花网 | 中文字幕一区在线观看视频 | 不卡一区| 在线免费观看视频你懂的 | 亚洲精品第一 | 免费国产一区二区 | 污片在线免费观看 | 精品国产乱码久久久久久老虎 | 精品免费视频 | 999精品视频 | 国产精品精品3d动漫 | 精品国产一区二区三区久久久蜜月 | 亚洲高清在线免费观看 | 国产二区三区 | 日韩精品四区 | 亚洲在线一区 | 毛色毛片免费看 | 欧美日韩亚洲系列 | 精品亚洲一区二区三区 | 在线中文字幕视频 | 国产在线二区 | 亚洲人免费视频 | 91.com视频| 精品视频在线观看 | 久久国 | 久草成人网 | 99爱在线 | 亚洲天堂精品一区 | 中文字幕在线第二页 | 日韩精品在线看 | 国产高清在线精品一区二区三区 | 一区二区三区四区在线视频 | 91亚洲精选 | 日韩高清一区 | 成人影院网站ww555久久精品 | 一级在线免费观看 | 国产91精品久久久久久久网曝门 | 久久午夜视频 |