Javascript 传单:初始化地图容器的函数
在html表格中具有不同位置的纬度和经度,单击该行时,函数将纬度和经度值发送给javascript函数,javascript函数以引导模式加载openstreetmap地图和标记。 这在第一次调用函数时起作用,会显示标记,但在关闭模式并再次调用函数时,我会得到错误Javascript 传单:初始化地图容器的函数,javascript,jquery,twitter-bootstrap,leaflet,openstreetmap,Javascript,Jquery,Twitter Bootstrap,Leaflet,Openstreetmap,在html表格中具有不同位置的纬度和经度,单击该行时,函数将纬度和经度值发送给javascript函数,javascript函数以引导模式加载openstreetmap地图和标记。 这在第一次调用函数时起作用,会显示标记,但在关闭模式并再次调用函数时,我会得到错误 未捕获错误:映射容器已初始化 有没有办法让地图组 <div id="map" class="map" style="height: 300px;"></div> 每次打开模式或调用函数时都会重新初始化。
未捕获错误:映射容器已初始化 有没有办法让地图组
<div id="map" class="map" style="height: 300px;"></div>
每次打开模式或调用函数时都会重新初始化。错误来自传单,因为我们每次执行
sendlatlng
时都试图创建映射容器。这没关系,因为我们不需要在sendlatlng
函数中创建地图和标记,只需创建一次,然后使用该函数更新现有对象的坐标。以下是一个例子:
单张地图!
#地图{
宽度:450px;
高度:250像素
}
//只是为了演示
var defaultCoords=[-41.291,-185.229];
//设置我们的地图
var map=L.map('map').setView(defaultCoords,12);
L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
{
最大缩放:18
}).addTo(地图);
//下面我们将演示sendlatlng函数
map.on('click',onmaclick);
//使用此变量在sendlatlng函数外部跟踪标记
var myMarker=L.marker(defaultCoords).addTo(map);
//在我们的示例中,我们将列出要触发的地图上的单击
//更改与sendlatlng功能的协调
函数onMapClick(e){
sendlatlng(即Latlatlng)
}
//根据传递给函数的坐标更新地图和标记位置
//我们将只更新现有的map和myMarker变量,而不是创建新的变量
函数sendlatlng(coords){
地图。setView(coords,12);
myMarker.setLatLng(coords);
}
如果您创建一个映射并尝试再次映射,您将收到此错误。请尝试以下示例代码
//Use this before creating the map
if (map != undefined) {
map.remove();
}
//Use this after adding tile layer
setTimeout(function () { map.invalidateSize() }, 1200);
//Use this before creating the map
if (map != undefined) {
map.remove();
}
//Use this after adding tile layer
setTimeout(function () { map.invalidateSize() }, 1200);