【发布时间】:2018-12-06 05:40:44
【问题描述】:
我从 Json 中抓取数据并在 queryLat/queryLng 中包含数组,之后我创建了另一个函数 initMap 并将其绑定到谷歌脚本。但是我很难将 queryLat 和 queryLng 传递给 initMap。弹出“queryLat 未定义”。我如何将这些传递给 initMap。
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
});
}
}
【问题讨论】:
-
不要在@foreach 中再次定义这些变量
-
queryLat和queryLng覆盖$estates的最后一个索引结果上的值。如果您需要最后一个结果,请不要使用循环。还有一件事,您的地图加载异步,可能您的 $getJSON 在此之前没有完成,这会影响分配空值为lat和lng -
非常感谢已经解决了但是如何迭代标记? @Sachink
-
将
queryLat和queryLng设为数组。并将其循环用于标记:)for (var i = 0; i < queryLat.length; i++) { var newMarker = new google.maps.Marker({ position: {lat: queryLat[i], lng: queryLng[i]} , map: map }); } -
我之前做过同样的事情 :) 但实际上没有工作,控制台中没有错误,但地图中也没有标记。如果我不使用,那么我会得到一个标记:)) 我更新了代码,你可以检查一下吗? @Sachink
标签: javascript jquery google-maps google-maps-api-3