Передача данных в другую функцию - PullRequest
0 голосов
/ 06 декабря 2018

Я удалил данные из Json и содержащие массивы в queryLat / queryLng, после этого я создал еще одну функцию initMap, также связав ее со скриптом Google.Но мне было сложно передать 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
            });
        }

    }

Ответы [ 3 ]

0 голосов
/ 06 декабря 2018

Проблема в следующем коде:

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')}}"
0 голосов
/ 06 декабря 2018

Для нескольких маркеров, если вы определяете массивы глобально, вам нужно поместить значения lat и long в массив, а также обновить переменную маркера для отображения разных маркеров. Надеюсь, это поможет вам получить несколько маркеров.

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

}
0 голосов
/ 06 декабря 2018

Вы должны определить свои переменные queryLat и 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
        });
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...