Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 初始化地图、添加标记然后清除标记的最简单方法是什么?_Javascript_Mapbox - Fatal编程技术网

Javascript 初始化地图、添加标记然后清除标记的最简单方法是什么?

Javascript 初始化地图、添加标记然后清除标记的最简单方法是什么?,javascript,mapbox,Javascript,Mapbox,我们有一个页面,上面有一个机构列表。有一个按钮标记为“地图”。当用户单击它时,会出现一个Jquery对话框窗口,并且会在该窗口中出现一个Mapbox地图,其中有一个单独的标记指示该机构的位置 问题是标记没有被清除,因此用户第三次单击地图按钮时,地图上有3个标记 我们想知道 如何正确清除地图上的所有标记和 如何将地图居中放置在标记上 我们正在使用以下工具: 初始化映射 var map = L.mapbox.map('map', 'our-map') .setView([49.2500,

我们有一个页面,上面有一个机构列表。有一个按钮标记为“地图”。当用户单击它时,会出现一个Jquery对话框窗口,并且会在该窗口中出现一个Mapbox地图,其中有一个单独的标记指示该机构的位置

问题是标记没有被清除,因此用户第三次单击地图按钮时,地图上有3个标记

我们想知道

如何正确清除地图上的所有标记和 如何将地图居中放置在标记上 我们正在使用以下工具:

初始化映射

var map = L.mapbox.map('map', 'our-map')
     .setView([49.2500, -123.1000], 9);
当用户单击按钮时,会将标记添加到地图中:

jQuery('.map-button').click(function(){              
    //jQuery(this.addClass("active"));
    var lat = jQuery(this).attr('data-lat');
    var long = jQuery(this).attr('data-long');
    var markerLayers = L.mapbox.markerLayer({
        // this feature is in the GeoJSON format: see geojson.org
        // for the full specification
        type: 'Feature',
        geometry: {
            type: 'Point',
            // coordinates here are in longitude, latitude order because
            // x, y is the standard for GeoJSON and many formats
            coordinates: [long, lat ]
        },
        properties: {
            title: 'A Single Marker',
            description: 'Just one of me',
            // one can customize markers by adding simplestyle properties
            // http://mapbox.com/developers/simplestyle/
            'marker-size': 'large',
            'marker-color': '#008000'
        }
    }).addTo(map);




 UPDATED CODE

    <script>
                var markerLayer = L.mapbox.markerLayer({ 
    type: 'FeatureCollection', 
    features: { 
    } 
    }).addTo(map); 
                  jQuery('.map-button').click(function(){

                    //jQuery(this.addClass("active"));
                    var lat = jQuery(this).attr('data-lat');
                    var long = jQuery(this).attr('data-long');


                 var geojson = [
     {
      "type": "Feature",
      "geometry": {
        "type": "Point",
        "coordinates": [long,lat]
      },
      "properties": {

        "marker-color": "#008000",
        "marker-size": "large",

      }
      }
     ];
      markerLayer.setGeoJSON(geojson);
      map.setView([long, lat ], 9);

                //map.setView([long, lat ], 9);
                    //alert(jQuery(this).attr('data-lat'));
                    })

                       jQuery('#dialog-modal').live("dialogclose", function(){
      //jQuery('.leaflet-marker-icon').hide();

      markerLayer.clearLayers();
      });

要设置地图的中心,请执行以下操作:

map.setView([long, lat ], 9);
要清除图层中的标记,请执行以下操作:

markerLayers.clearLayers();

谢谢Tom,不幸的是,我在控制台中收到一个错误,markerLayers没有定义。有什么想法吗?您正在单击处理程序中定义markerLayers:您需要在单击处理程序之外定义它,如var markerLayers=L.mapbox.markerLayer,并在单击处理程序中对其调用setGeoJSON。至于setView,它似乎对我不起作用。看起来它在一个随机的位置上放大了非常近的距离…有什么想法吗?我没有markerlayer,我已经将marker直接添加到地图上了。如何在没有特定图层对象的情况下清除地图?