Google Maps API V3 и проблема локального поиска - пустые результаты? - PullRequest
1 голос
/ 11 августа 2010

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

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

<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>

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

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

С уважением, Венберт

ОБНОВЛЕНИЕ Я где-то здесь допустил ошибку:

<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 только геокодирует Major Roads.См. http://gmaps -samples.googlecode.com / svn / trunk / mapcoverage_filtered.html

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

1 Ответ

3 голосов
/ 11 августа 2010

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

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...