2016-12-24 2 views
-1

Ich habe unten API Link für Google-Karte hinzugefügt:Warum die von Google generierte.maps.places.Autocomplete Suchadresse ZERO_RESULT während Geocodierung gibt?

<script type="text/javascript" src="http://maps.google.com/maps/api/js?Place=true&libraries=places"></script> 

Auf Fenster Lastereigniskarte Lasten mit Standard lat und lange angegebenen Werte schwer in loadShowMap() codiert. Und haben auch Register Textfeld für AutoComplete.

google.maps.event.addDomListener(window, 'load', loadShowMap); 

function loadShowMap() { 
    var input = document.getElementById('txtSearch'); 
    var autocomplete = new google.maps.places.Autocomplete(input); 
    var latlng = new google.maps.LatLng(41.4925374, -99.9018); 
    var myOptions = { 
     zoom: 11, 
     center: latlng, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    } 
    geocoder = new google.maps.Geocoder(); 
    mapgoogle = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
    NewMapLoad(mapgoogle, geocoder, ''); 

    $('#btnMapSearch').click(function() { 
     geocoder = new google.maps.Geocoder(); 
     var address = $('#txtSearch').val(); 
     deleteOverlays(); 
     if (address != '') { 
      NewMapLoad(mapgoogle, geocoder, $('#txtSearch').val()); 
     } 
     else { alert('Please enter a Location to Search'); } 
    }); 
} 

Per Auto-Vervollständigen-Funktion bietet es die Anpassungsadresse wie im folgenden Bildschirm:

enter image description here

Dann wähle ich "Marketfair Mall, Skibo Road, Fayetteville, NC, USA". Dann auf die Suchschaltfläche klick unter Funktion wird aufgerufen. Das setzt den ersten Marker und den, den wir gerade suchen.

function NewMapLoad(Nmapgoogle, geocoder, searchplace) { 
    var strAddr = "Hollywood, LA" 
    var strPopupDiv = "<table cellPadding='0' cellSpacing='0' style='width:100%;'> <tr><td>" + "Initial Point" + "</td></tr></table> "; 
    var strSearchDiv = "<table cellPadding='0' cellSpacing='0' style='width:100%;'> <tr><td>" + "Search Point" + "</td></tr></table> "; 
    var PointColor = "RED"; 

    var OrglatLon = document.getElementById('hdnactlocation'); 
    var Orglat = "", OrgLon = ""; 

    if (OrglatLon != null && OrglatLon.value.split('|').length > 1) { 
     Orglat = OrglatLon.value.split('|')[0]; 
     OrgLon = OrglatLon.value.split('|')[1]; 
    } 
    else if (OrglatLon != null && OrglatLon.value.trim() != "") { 
     strAddr = OrglatLon.value; 
    } 


    AddMappointsNew(Orglat, OrgLon, strPopupDiv, geocoder, mapgoogle, PointColor, strAddr, "Initial Point"); 

    if (searchplace != '' && searchplace.toLowerCase() != 'clone') { 
     AddMappointsNew('', '', strSearchDiv, geocoder, mapgoogle, "GREEN", searchplace, "Search Point"); 
    } 
    if (searchplace.toLowerCase() == 'clone') { 
     AddMappointsNew(orglat, orglon, strSearchDiv, geocoder, mapgoogle, "GREEN", strAddr, "Search Point"); 
    } 


    overlay = new google.maps.OverlayView(); 
    overlay.draw = function() { }; 
    overlay.setMap(mapgoogle); 
} 

für diese Einstellung Anfangs- und die Suche Marker über Karte unten Funktion aufgerufen wird:

function AddMappointsNew(lat, lon, strpopup, geocoder, mapgoogle, pointcolor, address, title) { 

    var point; 
    var iconlnk = "http://maps.google.com/mapfiles/ms/icons/red-dot.png"; 

    if (pointcolor != "" && pointcolor == "GREEN") { 
     iconlnk = "http://maps.google.com/mapfiles/ms/icons/green-dot.png"; 
    } 

    geocoder = new google.maps.Geocoder();    
    var addressdiv = $('<div/>').html(strpopup).html(); 
     geocoder.geocode({ 'address': address }, function (results, status) { 
      if (status == google.maps.GeocoderStatus.OK) { 
       mapgoogle.setCenter(results[0].geometry.location); 
       var marker = new google.maps.Marker({ 
        map: mapgoogle, 
        icon: iconlnk, 
        position: results[0].geometry.location, 
        title: title 
       }); 
       var infowindow = new google.maps.InfoWindow({ 
        content: addressdiv, 
        maxWidth: 300, 
        maxHeight: 200 
       }); 
       google.maps.event.addListener(marker, 'click', function() { 
        infowindow.open(mapgoogle, marker); 
       }); 
       if (pointcolor != "" && pointcolor == "GREEN") { 
        setSearchmarker(marker); 
       } 

       markersArray.push(marker); 
      } else { 
       mapgoogle.setZoom(5); 
       alert("Geocode was not successful for the following reason: " + status); 

      } 
     }); 
} 

aber nur erste Markerkarte über und für die Geocodierung Adresse zurück von Auto-Vervollständigen-Funktion gibt einen Fehler "gesetzt zu werden ZERO_RESULT ".

+0

Wahrscheinlich versuchen sollten, weil das nicht eine Adresse ist, ist es ein Ort. Bitte geben Sie eine [mcve], die Ihr Problem zeigt, mit dem gebuchten Code, bekomme ich einen Javascript-Fehler: 'Uncaught ReferenceError: deleteOverlays ist nicht definiert ' – geocodezip

Antwort

1

Wenn Sie sich die Places Autocomplete Example on Google Developers ansehen, werden Sie sehen, dass Sie nicht zweimal geocodiert werden müssen, was im Wesentlichen das ist, was Sie tun. Sie führen die Autocomplete aus, die den Place tatsächlich zurückgibt und dann haben Sie eine Suchschaltfläche, um danach erneut auf die Adresse zu suchen.

Ich habe eine kleine Probe zusammengestellt, was Sie here

autocomplete.addListener('place_changed', function() { 
    var place = autocomplete.getPlace(); 
    console.log(place); 
    if (!place.geometry) { 
     // User entered the name of a Place that was not suggested and 
     // pressed the Enter key, or the Place Details request failed. 
     window.alert("No details available for input: '" + place.name + "'"); 
     return; 
    } 

    // If the place has a geometry, then present it on a map. 
    if (place.geometry.viewport) { 
     mapgoogle.fitBounds(place.geometry.viewport); 
    } else { 
     mapgoogle.setCenter(place.geometry.location); 
     mapgoogle.setZoom(17); // Why 17? Because it looks good. 
    } 
    marker = new google.maps.Marker({ 
     map: mapgoogle, 
     anchorPoint: new google.maps.Point(0, -29) 
    }); 
    marker.setIcon(/** @type {google.maps.Icon} */ ({ 
     url: place.icon, 
     size: new google.maps.Size(71, 71), 
     origin: new google.maps.Point(0, 0), 
     anchor: new google.maps.Point(17, 34), 
     scaledSize: new google.maps.Size(35, 35) 
    })); 
    marker.setPosition(place.geometry.location); 
    marker.setVisible(true); 

    var address = ''; 
    if (place.address_components) { 
     address = [ 
      (place.address_components[0] && place.address_components[0].short_name || ''), 
      (place.address_components[1] && place.address_components[1].short_name || ''), 
      (place.address_components[2] && place.address_components[2].short_name || '') 
     ].join(' '); 
    } 

}); 
+0

Ich nicht mit oben gelöscht können Sie vorschlagen, was ich mit meinem Code zu tun haben soll? – JMD

Verwandte Themen