Как исправить не LatLng или LatLngLiteral: не проблема объекта - Google Maps - PullRequest
0 голосов
/ 24 января 2019

Идея этой функциональности заключается в том, что когда пользователь вводит местоположение, мы добавляем маркер в это место и перемещаем его по указанному маркеру и увеличиваем его местоположение.Однако все это работает относительно хорошо.Это дает мне эту ошибку «Uncaught Kc {message:», а не LatLng или LatLngLiteral: не объект », имя:« InvalidValueError »."

if(map.getZoom() == 2) {

    map.setCenter({lat:data.address_lat2, lng:data.address_lng2});
    map.panTo(marker.position);
    smoothZoom(map, 11, map.getZoom());

    var location = new google.maps.LatLng({lat:data.address_lat2, lng:data.address_lng2});
    var bounds = new google.maps.LatLngBounds();
    bounds.extend(location.position);
    map.fitBounds(bounds);
}

Это моя функция smoothZoom

function smoothZoom (map, max, cnt) {
   if (cnt >= max) {
        return;
    } else {
        z = google.maps.event.addListener(map, 'zoom_changed', function(event){
        google.maps.event.removeListener(z);
        smoothZoom(map, max, cnt + 1);
    });
        setTimeout(function(){map.setZoom(cnt)}, 150);
    }
}

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Оказывается, что эта строка кода bounds.extend (location.position);должен был быть bounds.extend ({lat: data.address_lat2, lng: data.address_lng2});

0 голосов
/ 24 января 2019

A google.maps.LatLng не имеет конструктора, который принимает google.maps.LatLngLiteral в качестве аргумента.Это недопустимый синтаксис:

var location = new google.maps.LatLng({lat:data.address_lat2, lng:data.address_lng2});

Должно быть:

var location_place = new google.maps.LatLng(data.address_lat2, data.address_lng2);

или:

var location_place = {lat:parseFloat(data.address_lat2), lng:parseFloat(data.address_lng2)};

(parseFloat требуется только в том случае, если они являются строками)

Также: location не является хорошим именем переменной.(см. ref1 или ref2 )

...