谷歌地图API V3和本地搜索问题 - 空结果?

时间:2010-08-11 15:10:39

标签: google-maps google-api

我正在尝试实施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-samples-v3.googlecode.com/svn-history/r136/trunk/localsearch/places.html

任何回复都将不胜感激。

此致 Wenbert

更新 我在这里犯了一个错误:

<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

感谢irc.geekshed.net #googleapis

中的jgeerdes

1 个答案:

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