Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.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 从JS中的函数发送变量_Javascript_Jquery_Leaflet_Openstreetmap - Fatal编程技术网

Javascript 从JS中的函数发送变量

Javascript 从JS中的函数发送变量,javascript,jquery,leaflet,openstreetmap,Javascript,Jquery,Leaflet,Openstreetmap,我有一个带有地图的JS脚本,它运行良好: var-lat=0; var lng=0; 函数onLocationFound(e){ var半径=e.精度/2; lat=e.latlng.lat; 液化天然气=e.latlng.lng; 控制台日志(如latlng); L.marker(e.latlng).addTo(map).bindPopup(“Tutaj jesteś!!!”).openPopup(); L.圆(e.板条,半径)。添加到(地图); } 函数onLocationError(e){

我有一个带有地图的JS脚本,它运行良好:

var-lat=0;
var lng=0;
函数onLocationFound(e){
var半径=e.精度/2;
lat=e.latlng.lat;
液化天然气=e.latlng.lng;
控制台日志(如latlng);
L.marker(e.latlng).addTo(map).bindPopup(“Tutaj jesteś!!!”).openPopup();
L.圆(e.板条,半径)。添加到(地图);
}
函数onLocationError(e){
//警报(e.message);
}
var map=L.map('mapdiv'{
是的,
fadeAnimation:错误
}).setView([54.35070881441067,18.641191756395074],15);
L.tileLayer('https://{s}.tile.osm.org/{z}/{x}/{y}.png'{
属性:“©;参与者”,
maxZoom:30,
动物控制:对,
特雷蒂娜:是的
}).addTo(地图);
地图上('locationfound',onLocationFound);
map.on('locationerror',onLocationError);
定位({
setView:对,
最大缩放:16
});
让myFilter=['灰度:100%'];
让myTileLayer=L.tileLayer.colorFilter('https://maps.wikimedia.org/osm-intl/{z} /{x}/{y}.png'{
归属:'',
过滤器:myFilter,
}).addTo(地图);
/*
lc=L.control.locate({
字符串:{
标题:“告诉我我在哪里,哟!”
}
}).addTo(地图);
*/
var LeafIcon=L.Icon.extend({
选项:{
shadowUrl:'leaf shadow.png',
iconSize:[38,95],
阴影大小:[50,64],
iconAnchor:[22,94],
暗影主播:[4,62],
popupAnchor:[-3,-76]
}
});
var greenIcon=新叶图标({
iconUrl:'叶绿色.png'
}),
redIcon=新叶图标({
iconUrl:'叶红.png'
}),
橙色图标=新的叶子图标({
iconUrl:'leaf orange.png'
});
L.icon=功能(选项){
返回新的L.图标(选项);
};
L.标记([54.45070881441067,18.541191756395074]{
图标:绿色图标
}).addTo(map).bindPopup('yyyyyy.
易于自定义'); L.标记([54.35070881441367,18.641191756395774]{ 图标:redIcon }).addTo(map).bindpoppup('xxxxxxx.
易于自定义').openPopup(); L.标记([54.58273849989086,18.37322638357547]{ 图标:绿色图标 }).addTo(map).bindPopup('yyyyyy.
易于自定义'); L.EditControl=L.Control.extend({ 选项:{ 位置:'左上', 回调:null, 种类:'', html:' }, onAdd:函数(映射){ var container=L.DomUtil.create('div','传单控件传单栏'), link=L.DomUtil.create('a','',容器); link.href='#'; link.title='createanew'+this.options.kind; link.innerHTML=this.options.html; 打开(链接'click',L.DomEvent.stop)。打开(链接'click',function()){ window.LAYER=this.options.callback.call(map.editTools); },这个); 返回容器; } }); var循环=L循环([lat,lng]{ 半径:1000 }).addTo(地图); circle.enableEdit(); on('dblclick',L.DomEvent.stop.)。on('dblclick',circle.toggleEdit); //圆.on('可编辑:顶点:拖动',函数(e){ 地图打开('可编辑:绘图:移动',功能(e){ console.log(circle.getLatLng()) console.log(circle.getRadius()); });
onLocationFound()
函数中,我为
lat
lng
变量设置了值。我想在此代码中使用这些变量:

var circle = L.circle([lat, lng], {
  radius: 1000
}).addTo(map);

但是它不起作用。我在控制台中没有错误。我如何修复此问题?

问题是因为
onLocationFound()
函数仅在地图上触发
locationfound
事件时调用,但在此之前您尝试使用
lat
lng
值,因此这些值是
未定义的

要解决此问题,请移动
onLocationFound()
函数内的
var循环=…
行:

function onLocationFound(e) {
  var radius = e.accuracy / 2;
  lat = e.latlng.lat;
  lng = e.latlng.lng;
  console.log(e.latlng);

  L.marker(e.latlng).addTo(map).bindPopup("Tutaj jesteś!!!").openPopup();
  L.circle(e.latlng, radius).addTo(map);

  var circle = L.circle([lat, lng], {
    radius: 1000
  }).addTo(map);
}
从本例中可以看出,您的代码已经在这一行中执行了类似的操作:

L.circle(e.latlng, radius).addTo(map);
您试图使用的代码中的差异只是您为圆定义的半径


另外请注意,您还可以删除这些变量的全局定义,因为应尽可能避免使用全局变量。

调用函数
onLocationFound
可能根本没有运行。我发现
onLocationError
回调函数的内容被注释掉。如果您取消注释(或添加一个
控制台。error()
)在那里,您可能会得到更多信息。谢谢。我在这里添加了您的代码:我有错误:地理位置错误:位置不可用。该页面对我来说很好。听起来您好像没有从浏览器权限启用地理位置访问。