Невозможно получить точку в вызове Google Maps API - PullRequest
0 голосов
/ 26 октября 2009

У меня был следующий рендеринг HTML-страницы для использования API Карт Google. Это продолжалось около двух месяцев, и внезапно перестал работать. Я пытаюсь получить точку с помощью функции getLatLng, и она, кажется, возвращает ноль каждый раз. Кто-нибудь сталкивался с подобной проблемой или видел что-то здесь не так? Любая помощь приветствуется.

Использование версии 2 API. ( "V = 2")

var map = null;
var geocoder = null;
var marker;
var g_address = "1 Yawkey Way Boston MA";
var toggleState = 0;
var toggleStateDir = 0;

var mapDir;
var gDir;
var geocoderDir = null;
var markerDir;
var g_addressDir = "100 Commonwealth Ave Boston MA";

var panorama;
var currentYaw = 180;
var currentPitch = 0;
var currentZoom = 0;

function initialize() 
{
    if (GBrowserIsCompatible()) 
    {
        // Map                        
        document.getElementById("address").value = g_address;
        document.getElementById("addressDir").value = g_addressDir;
        map = new GMap2(document.getElementById("map_canvas"));
        map.addControl(new GMapTypeControl());
        map.addControl(new GScaleControl());
        map.addControl(new GLargeMapControl3D());

        // Street View
        geocoder = new GClientGeocoder();
        panorama = new GStreetviewPanorama(document.getElementById("pano"));

        // Directions
        mapDir = new GMap2(document.getElementById("map_canvas_dir"));
        gDir = new GDirections(mapDir, document.getElementById("directions"));
        mapDir.addControl(new GMapTypeControl());
        mapDir.addControl(new GScaleControl());
        mapDir.addControl(new GLargeMapControl3D());

        // Traffic overlay
        map.setUIToDefault();
        var trafficOptions = { incidents: true };
        trafficInfo = new GTrafficOverlay(trafficOptions);
        mapDir.setUIToDefault();
        var trafficOptionsDir = { incidents: true };
        trafficInfoDir = new GTrafficOverlay(trafficOptionsDir);

        showAddress(g_address, g_addressDir);
    }
}

function showAddress(address, addressDir) 
{
    if (geocoder)
    {
        geocoder.getLatLng(address,
            function(point) {
                if (!point) {
                    alert(address + " not found" + response.Status.code);
                }
                else {
                    // Map                        
                    g_address = address
                    map.setCenter(point, 15);
                    marker = new GMarker(point);
                    map.addOverlay(marker);
                    // Street View
                    document.getElementById("lat").value = point.y;
                    document.getElementById("long").value = point.x;
                    document.getElementById("pano").removeAttribute("pano");
                    panorama.setLocationAndPOV(new GLatLng(point.y, point.x), { yaw: currentYaw, pitch: currentPitch, zoom: currentZoom });
                    // Directions
                    gDir.load("from: " + addressDir + " to: " + address, { "locale": "en_US" });
                }
            }
        );
    }
}

1 Ответ

1 голос
/ 26 октября 2009

В этом коде нет ничего плохого. У меня отлично работает.

К сожалению, .getLatLng () не возвращает код ошибки при сбое, и эта строка падает, когда .getLatLng ничего не возвращает:

alert(address + " not found" + response.Status.code);

Я не могу угадать, есть ли проблема с вашим ключом API (ошибка 610) или если вы заблокировали слишком много запросов геокодирования (ошибка 620). Я сильно подозреваю, что это будет один из этих двух, потому что любой другой код ошибки может привести к сбою кода при его попытке.

Попробуйте изменить код (! Point) на

if (!point) {
   geocoder.getLocations(address, function(response) {
     alert(address + " not found: " + response.Status.code);
   });
}

, который использует .getLocations () по тому же адресу и отображает код ошибки.

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