Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.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_Jquery_Twitter Bootstrap_Leaflet_Openstreetmap - Fatal编程技术网

Javascript 传单:初始化地图容器的函数

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> 每次打开模式或调用函数时都会重新初始化。

在html表格中具有不同位置的纬度和经度,单击该行时,函数将纬度和经度值发送给javascript函数,javascript函数以引导模式加载openstreetmap地图和标记。 这在第一次调用函数时起作用,会显示标记,但在关闭模式并再次调用函数时,我会得到错误
未捕获错误:映射容器已初始化

有没有办法让地图组

<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);