Ответы пользователя по тегу Google Maps
  • Почему возникает ошибка initMap is not a function?

    Immortal_pony
    @Immortal_pony Куратор тега JavaScript
    При подключении google api вы указываете, что должна быть выполнена функцкция initMap вот этим параметром
    callback=initMap.
    Но в списке подключения у вас file.js и index.js подключаются после скрипта google api. Соотвественно, когда google api подключается, у вас функции initMap еще не существует.
    Ответ написан
  • Как реализовать динамический маркер на google maps?

    Immortal_pony
    @Immortal_pony Куратор тега JavaScript
    var beachMarker = null;
    var changeTimeout = 5000;
    
    function initCrew(lat, lng) {
        ...
        beachMarker = new google.maps.Marker({ // without "var"
        ...
    }
    
    setTimeout(function() { 
        beachMarker.setPosition(new google.maps.LatLng(newLat, newLng));
    }, changeTimeout);
    Ответ написан
    Комментировать
  • ZF2 Модуль (или что угодно) для работы с Yandex|Google Map Api?

    Immortal_pony
    @Immortal_pony
    function makeGoogleApiRequest($params)
        {
            $apiUrl = "https://maps.googleapis.com/maps/api/geocode/json";
            $context = stream_context_create(['http'=>['timeout'=>5]]);
            
            
            
            // Make request
            $response = json_decode(file_get_contents($apiUrl . "?" . http_build_query($params), false, $context)); 
    
            
            
            // Check response
            if (
                json_last_error() ||
                !isset($response->status) || 
                $response->status !== "OK" ||
                !isset($response->results[0]->place_id) || 
                !isset($response->results[0]->formatted_address) ||
                !isset($response->results[0]->address_components) ||           
                !isset($response->results[0]->geometry->location->lat) ||
                !isset($response->results[0]->geometry->location->lng)           
            ) {                
                throw new \UnexpectedValueException ("Google Api Request Failed");
            }
            
            
            
            return $response;
        }
    
       
    
    
    
        /* Пример использования */
        $place = makeGoogleApiRequest([
            'address' => "Москва, Лаврушинский пер, 10",
            'language' => "ru"
        ]);
    Ответ написан
    1 комментарий
  • Google Map Autocomplate. Как проверять данные?

    Immortal_pony
    @Immortal_pony Куратор тега PHP
    После успешного автодополнения, вы получаете от Place ID этого места.
    Далее, на стороне бэкэнда по указанному id можно получить всю необходимую информацию через Google Geocoding API
    Ответ написан
    2 комментария
  • Draggable в google maps, его выключение при определенных условиях?

    Immortal_pony
    @Immortal_pony Куратор тега JavaScript
    При инициализации карты в качетсве значения для параметра "draggable" можно подставить результат сравнения ширины экрана с любым значением. Например, так:

    var mapOptions = {
        draggable: $(window).width() > 640,
        //... Остальные опции
    }
    Ответ написан
    1 комментарий
  • Как задать координаты LatLng для Google Maps?

    Immortal_pony
    @Immortal_pony Куратор тега JavaScript
    Перепишите функцию downloadUrl таким образом, чтоб она могла быть синхронной. Сейчас в момент, когда создается карта, данных о широте и долготе у скрипта еще нет.

    Примерно так:
    var city = new google.maps.LatLng(10, 10); // Переменную все же стоит сделать глобальной. И, возможно, присвоить ей какое-то значение по умолчанию
    
    downloadUrl("getCity.php", function(data) {
        var xmlCity = data.responseXML;
        var cityMarkers = xmlCity.documentElement.getElementsByTagName("marker");
        var latCity = parseFloat(cityMarkers[0].getAttribute("lat"));
        var longCity = parseFloat(cityMarkers[0].getAttribute("lng"));
        city = new google.maps.LatLng(latCity, longCity); // Изменяется значение, если данные от скрипта получены
    }, false); // Указание, что запрос должен быть синхронным


    function downloadUrl(url, callback, async) { // Дополнительная переменная для возможности указания синхронности
        async = async || true; // Задание значения по умолчанию 
        var request = window.ActiveXObject ?
            new ActiveXObject('Microsoft.XMLHTTP') :
            new XMLHttpRequest;
    
        request.onreadystatechange = function() {
            if (request.readyState == 4) {
                request.onreadystatechange = doNothing;
                callback(request, request.status);
            }
        };
    
        request.open('GET', url, async); // Указание синхронности запроса
        request.send(null);
    }
    Ответ написан
    Комментировать
  • Как отключить выполение js с сохранинием в куки?

    Immortal_pony
    @Immortal_pony Куратор тега JavaScript
    $('input[type="checkbox"]').on('change', function() { 
        if ($(this).prop('checked')) { 
            $(".appartment").off('mouseenter');
            $.cookie('map-trigger-status', 'off'); // Библиотека для работы с cookies: https://github.com/carhartl/jquery-cookie
        }
    });
    Ответ написан