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