Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.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_Google Maps_Google Maps Api 3 - Fatal编程技术网

Javascript 将数据传递给另一个函数

Javascript 将数据传递给另一个函数,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({

我从Json中提取数据,并在queryal/queryLng中包含数组,然后创建另一个函数initMap并将其绑定到google脚本。但我很难将queryal和queryLng传递到initMap中。弹出“未定义Querylate”。如何将它们传递给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
            });
        }

    }
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
不要在@foreach
queryla
queryLng
中再次定义这些变量,覆盖
$estate
的上一个索引结果上的值。如果需要最后的结果,请不要使用循环。还有一件事,您的映射加载异步,您的$getJSON在此之前可能没有完成,这会影响将空值赋值为
lat
lng
,感谢已经解决了很多问题,但是我如何迭代标记@Sachinkmake
queryla
queryLng
作为数组。并将其循环到marker:)
for(var i=0;i
我以前也做过同样的事情:)但没有工作实际上控制台中没有错误,但地图中也没有标记。如果我不使用,那么我会得到一个标记:)我更新了代码,你能检查一下吗@顺便问一下,我怎样才能标记它呢?因为查询是数组,你能告诉我吗?/谢谢你的建议,但没有效果还是没有标记。好吧,问题是有时候,没有标记,有时,当我刷新地图时,地图上会出现一个或两个标记:)),这基本上取决于您的API响应,您可以通过发送地址和请求从谷歌获取lat lng数据。。