2009-10-26 5 views
0

J'avais la page HTML suivante pour utiliser l'API Google Maps. Cela a duré environ deux mois et tout à coup, j'ai cessé de travailler. J'essaye d'obtenir le point avec la fonction getLatLng et il semble rendre null chaque fois. Est-ce que quelqu'un a connu un problème similaire ou a-t-il vu quelque chose de mal ici? Toute aide est appréciée.Impossible d'obtenir le point dans l'appel de l'API Google Maps

Utilisation de la version 2 de l'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" }); 
       } 
      } 
     ); 
    } 
} 
+0

J'ai essayé votre code et il semble fonctionner correctement. Le problème est le plus probable ailleurs. Avez-vous essayé d'utiliser une console pour vérifier les erreurs? –

Répondre

1

Il n'y a rien de mal avec ce code. Cela fonctionne parfaitement pour moi.

Malheureusement, .getLatLng() ne renvoie pas un code d'erreur quand il échoue, et cette ligne se bloque lorsque .getLatLng ne retourne rien:

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

Je ne peux pas deviner s'il y a un problème avec votre Clé API (erreur 610) ou si vous avez été bloqué pour avoir effectué trop de requêtes de géocodage (erreur 620). Je soupçonne fortement que ce sera l'un de ces deux parce que n'importe quel autre code d'erreur devrait faire échouer le code quand je l'essaye.

Essayez de changer (! Points) code pour

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

qui utilise .getLocations() sur la même adresse et affiche le code d'erreur.

+0

Mike, il revient avec le code 610. Je vais regarder dans cela. Ma clé devrait être valide bien qu'elle ait été copiée/collée directement sur leur site. – Matt

+0

610 peut également signifier qu'il y a un problème avec la valeur & sensor. Vérifiez que vous avez remplacé "true_or_false" par "true" ou "false". –