Javascript 将数据传递给另一个函数
我从Json中提取数据,并在queryal/queryLng中包含数组,然后创建另一个函数initMap并将其绑定到google脚本。但我很难将queryal和queryLng传递到initMap中。弹出“未定义Querylate”。如何将它们传递给initMapJavascript 将数据传递给另一个函数,javascript,jquery,google-maps,google-maps-api-3,Javascript,Jquery,Google Maps,Google Maps Api 3,我从Json中提取数据,并在queryal/queryLng中包含数组,然后创建另一个函数initMap并将其绑定到google脚本。但我很难将queryal和queryLng传递到initMap中。弹出“未定义Querylate”。如何将它们传递给initMap var queryLat = []; var queryLng = []; @foreach($estates as $est) var result = $.getJSON({
var queryLat = [];
var queryLng = [];
@foreach($estates as $est)
var result = $.getJSON({
url: 'https://maps.googleapis.com/maps/api/geocode/json?address={{$est->address}}&key={{env('GOOGLE_MAPS_API')}}'
});
result.done(function(data) {
queryLat = data.results[0].geometry.location.lat;
queryLng = data.results[0].geometry.location.lng;
});
@endforeach
function initMap()
{
var options =
{
zoom : 10,
center : {lat:34.652500, lng:135.506302}
}
var map = new
google.maps.Map(document.getElementById("map"), options);
for (var i = 0; i < queryLat.length; i++)
{
var newMarker = new google.maps.Marker
({
position: {lat: queryLat[i], lng: queryLng[i]} ,
map: map
});
}
}
var querylate=[];
变量queryLng=[];
@foreach($est的不动产)
var result=$.getJSON({
网址:'https://maps.googleapis.com/maps/api/geocode/json?address={{$est->address}}&key={{env('GOOGLE_-MAPS_-API')}'
});
结果.完成(功能(数据){
queryal=data.results[0].geometry.location.lat;
queryLng=data.results[0].geometry.location.lng;
});
@endforeach
函数initMap()
{
var期权=
{
缩放:10,
中心:{纬度:34.652500,液化天然气:135.506302}
}
var-map=new
Map(document.getElementById(“Map”),选项);
for(var i=0;i
您应该在脚本开始的地方全局定义变量QueryLa和queryLng
<script type="text/javascript">
var queryLat;
var queryLng;
@foreach($estates as $est)
var result = $.getJSON({
url: 'https://maps.googleapis.com/maps/api/geocode/json?address={{$est->address}}&key={{env('GOOGLE_MAPS_API')}}'
});
result.done(function(data) {
queryLat = data.results[0].geometry.location.lat;
queryLng = data.results[0].geometry.location.lng;
});
@endforeach
function initMap()
{
var options =
{
zoom : 12,
center : {lat:34.652500, lng:135.506302}
}
var map = new
google.maps.Map(document.getElementById("map"), options);
var marker = new
google.maps.Marker
({
position: {lat: queryLat, lng: queryLng},
map: map
});
}
槲皮素变种;
queryLng变种;
@foreach($est的不动产)
var result=$.getJSON({
网址:'https://maps.googleapis.com/maps/api/geocode/json?address={{$est->address}}&key={{env('GOOGLE_-MAPS_-API')}'
});
结果.完成(功能(数据){
queryal=data.results[0].geometry.location.lat;
queryLng=data.results[0].geometry.location.lng;
});
@endforeach
函数initMap()
{
var期权=
{
缩放:12,
中心:{纬度:34.652500,液化天然气:135.506302}
}
var-map=new
Map(document.getElementById(“Map”),选项);
var标记=新
google.maps.Marker
({
位置:{lat:queryylat,lng:queryylng},
地图:地图
});
}
此代码中存在问题:
url: 'https://maps.googleapis.com/maps/api/geocode/json?address={{$est->address}}&key={{env('GOOGLE_MAPS_API')}}'
您已使用撇号将字符串括起来,但该字符串也包含撇号
改用这个:
url: "https://maps.googleapis.com/maps/api/geocode/json?address={{$est->address}}&key={{env('GOOGLE_MAPS_API')}}"
对于多个标记,如果要全局定义数组,则必须在数组中推送lat和long值,并且还需要更新标记变量以显示不同的标记。。希望它能帮助您获得多个标记 变量Querylate=[]; 变量queryLng=[]
@foreach($estates as $est)
var result = $.getJSON({
url: 'https://maps.googleapis.com/maps/api/geocode/json?address={{$est->address}}&key={{env('GOOGLE_MAPS_API')}}'
});
result.done(function(data) {
queryLat.push(data.results[0].geometry.location.lat);
queryLng.push(data.results[0].geometry.location.lng);
});
@endforeach
function initMap()
{
var options =
{
zoom : 10,
center : {lat:34.652500, lng:135.506302}
}
var map = new
google.maps.Map(document.getElementById("map"), options);
for (var i = 0; i < queryLat.length; i++)
{
var new_marker_str = "newMarker"+i;
new_marker_str = new google.maps.Marker
({
position: {lat: queryLat[i], lng: queryLng[i]} ,
map: map
});
}
}
@foreach($est的地产)
var result=$.getJSON({
网址:'https://maps.googleapis.com/maps/api/geocode/json?address={{$est->address}}&key={{env('GOOGLE_-MAPS_-API')}'
});
结果.完成(功能(数据){
push(data.results[0].geometry.location.lat);
push(data.results[0].geometry.location.lng);
});
@endforeach
函数initMap()
{
var期权=
{
缩放:10,
中心:{纬度:34.652500,液化天然气:135.506302}
}
var-map=new
Map(document.getElementById(“Map”),选项);
for(var i=0;i
不要在@foreachqueryla
和queryLng
中再次定义这些变量,覆盖$estate
的上一个索引结果上的值。如果需要最后的结果,请不要使用循环。还有一件事,您的映射加载异步,您的$getJSON在此之前可能没有完成,这会影响将空值赋值为lat
和lng
,感谢已经解决了很多问题,但是我如何迭代标记@Sachinkmakequeryla
和queryLng
作为数组。并将其循环到marker:)for(var i=0;i
我以前也做过同样的事情:)但没有工作实际上控制台中没有错误,但地图中也没有标记。如果我不使用,那么我会得到一个标记:)我更新了代码,你能检查一下吗@顺便问一下,我怎样才能标记它呢?因为查询是数组,你能告诉我吗?/谢谢你的建议,但没有效果还是没有标记。好吧,问题是有时候,没有标记,有时,当我刷新地图时,地图上会出现一个或两个标记:)),这基本上取决于您的API响应,您可以通过发送地址和请求从谷歌获取lat lng数据。。