2010-08-11 4 views
1

Я пытаюсь реализовать Maps API V3 и локальный поиск, но у меня возникают проблемы. Так или иначе, результаты в функции OnLocalSearch() пусты.Google Maps API V3 и проблема локального поиска - пустые результаты?

Вот мой полный код:

<script type="text/javascript"> 
//<![CDATA[ 
$(document).ready(function() { 
    // do stuff when DOM is ready 
    var geocoder = new google.maps.Geocoder(); 
    var address = '{{string_location}}'; 
    var map; 

    // Our global state for LocalSearch 
    var gInfoWindow; 
    var gSelectedResults = []; 
    var gCurrentResults = []; 
    var gLocalSearch = new GlocalSearch(); 

    if (geocoder) { 
     geocoder.geocode({ 'address': address }, function (results, status) { 
      if (status == google.maps.GeocoderStatus.OK) { 
       //alert(results[0].geometry.location.lat()) 
       //alert(results[0].geometry.location.lng()) 

       //Create the Map and center to geocode results latlong 
       var latlng = new google.maps.LatLng(results[0].geometry.location.lat(), results[0].geometry.location.lng()); 
       var myOptions = { 
        zoom: 14, 
        center: latlng, 
        mapTypeId: google.maps.MapTypeId.ROADMAP 
       }; 

       map = new google.maps.Map(document.getElementById("map_canvas"), 
        myOptions); 

       gLocalSearch.setSearchCompleteCallback(this, OnLocalSearch); 
       gLocalSearch.execute("{{business_item.name}}"); 
      } 
      else { 
       alert('No results found. Check console.log()'); 
       console.log("Geocoding address: " + address); 
       console.log("Geocoding failed: " + status); 
      } 
     }); 
    } 

    /* 
    Other functions   
    */   
    function OnLocalSearch() { 
     if (gLocalSearch.results[0]) { //This is empty. Why? 
      var resultLat = gLocalSearch.results[0].lat; 
      var resultLng = gLocalSearch.results[0].lng; 
      var point = new GLatLng(resultLat,resultLng); 
      callbackFunction(point); 
     }else{ 
      alert("not found!"); 
     } 
    } 
}); 
//]]> 
</script> 

FYI, я использую это в качестве примера, и теперь я застрял в течение нескольких часов об этом: http://gmaps-samples-v3.googlecode.com/svn-history/r136/trunk/localsearch/places.html

Любой ответ будет весьма признателен.

С уважением, Wenbert

UPDATE Я сделал ошибку где-то здесь:

<script src="http://www.google.com/uds/api?file=uds.js&v=1.0" type="text/javascript"><;/script> 
<script src="http://maps.google.com/maps/api/js?v=3.1&sensor=false&region=PH"></script> 

Кроме того, убедитесь, что вы дважды проверьте адрес, который вы геокодируете. Я из Филиппин, и кажется, что Google только геокодирует крупные дороги. См http://gmaps-samples.googlecode.com/svn/trunk/mapcoverage_filtered.html

Благодаря jgeerdes из irc.geekshed.net #googleapis

+0

как мы можем получить оригинальное (точное) название по строчке ..? –

ответ

3

Просто сделав пару твиков так, что код на самом деле полный, и с использованием адреса, я знаю геокодируемся успешно плюс запроса я знаю что-то вернет, ваш код работает. Вот что я сделал:

<html> 
<head> 
<title>Wenbert test</title> 
<script src="http://www.google.com/jsapi"></script> 
<script type="text/javascript"> 
//<![CDATA[ 
google.load('jquery','1.4.2'); 
google.load('maps','3',{other_params:'sensor=false'}); 
google.load('search','1'); 
alert('starting...'); 

$(document).ready(function() { 
alert('here'); 
    // do stuff when DOM is ready 
    var geocoder = new google.maps.Geocoder(); 
    var address = '4019 lower beaver rd. 50310'; 
    var map; 

    // Our global state for LocalSearch 
    var gInfoWindow; 
    var gSelectedResults = []; 
    var gCurrentResults = []; 
    var gLocalSearch = new GlocalSearch(); 

    if (geocoder) { 
     geocoder.geocode({ 'address': address }, function (results, status) { 
      if (status == google.maps.GeocoderStatus.OK) { 
       //alert(results[0].geometry.location.lat()) 
       //alert(results[0].geometry.location.lng()) 

       //Create the Map and center to geocode results latlong 
       var latlng = new google.maps.LatLng(results[0].geometry.location.lat(), results[0].geometry.location.lng()); 
       var myOptions = { 
        zoom: 14, 
        center: latlng, 
        mapTypeId: google.maps.MapTypeId.ROADMAP 
       }; 

       map = new google.maps.Map(document.getElementById("map_canvas"), 
        myOptions); 

       gLocalSearch.setSearchCompleteCallback(this, OnLocalSearch); 
       gLocalSearch.execute("debra heights wesleyan church"); 
      } 
      else { 
       alert('No results found. Check console.log()'); 
       console.log("Geocoding address: " + address); 
       console.log("Geocoding failed: " + status); 
      } 
     }); 
    } 

    /* 
    Other functions   
    */   
    function OnLocalSearch() { 
     if (gLocalSearch.results[0]) { //This is empty. Why? 
      var resultLat = gLocalSearch.results[0].lat; 
      var resultLng = gLocalSearch.results[0].lng; 
      var point = new google.maps.LatLng(resultLat,resultLng); 
      callbackFunction(point); 
     }else{ 
      alert("not found!"); 
     } 
    } 
}); 
//]]> 
</script> 
</head> 
<body> 
<div id="map_canvas" style="height:100%;"></div> 
</body> 
</html> 
+0

Спасибо! Похоже, я сделал ошибку, включая javascript в заголовке. – wenbert

Смежные вопросы