久久久久久久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. 如何從地圖外部與傳單標記層進行交互?

        How to interact with leaflet marker layer from outside the map?(如何從地圖外部與傳單標記層進行交互?)
        <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'>

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

                  問題描述

                  限時送ChatGPT賬號..

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

                  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.

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

                  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,但我假設您的提要中的標記具有稱為id"的唯一 ID 屬性.您需要將此唯一 ID 添加到用戶可以單擊的鏈接中,以便鏈接可以選擇地圖上的正確標記.然后,您需要將 id 映射存儲到標記,以便檢索標記以在地圖上選擇它.

                  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()
                      })
                  }
                  

                  從服務器獲取數據時需要構建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;
                      },...
                  

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

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

                  相關文檔推薦

                  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?(是否可以將標志傳遞給 Gulp 以使其以不同的方式運行任務?)
                  Why do we need to install gulp globally and locally?(為什么我們需要在全局和本地安裝 gulp?)
                  How to run Gulp tasks sequentially one after the other(如何一個接一個地依次運行 Gulp 任務)
                  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>
                          • 主站蜘蛛池模板: 国产一级片久久久 | 欧美日韩精品 | 亚洲视频二区 | 激情久久网 | 一区二区国产精品 | 在线免费看黄 | 日韩av三区 | 欧美一区二区三区,视频 | 国产精品久久久久久一级毛片 | 国产成人aⅴ | jav成人av免费播放 | 男女网站免费观看 | 精品视频久久久 | 亚洲国产激情 | 韩日在线视频 | 欧美一区二区成人 | 亚洲一区在线日韩在线深爱 | 亚洲成人一区二区三区 | 一级毛片在线播放 | 欧美成人a∨高清免费观看 老司机午夜性大片 | 日韩精品一区二区三区在线观看 | a在线免费观看视频 | 成人av免费播放 | 欧美亚洲视频在线观看 | 日韩一区二区av | 人人九九精 | 日韩在线小视频 | www久久久 | 欧美精品一区二区三区四区 | 蜜桃av人人夜夜澡人人爽 | 欧美日韩精品在线一区 | 欧美不卡视频一区发布 | 精品久久久久久久久久 | 放个毛片看看 | 国产精品三级久久久久久电影 | 欧美一区二区三区在线 | 日韩av中文 | 亚洲性视频网站 | 亚洲黄色一级 | 色噜噜色综合 | 国产激情片在线观看 |