2012-11-01 130 views
1

有人能告訴我爲什麼getPlaces()函數返回空格字符串在下面?Google Maps Places API問題與getPlaces()函數

在頭元素我有鏈接到谷歌地圖腳本

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false&v=3.exp&key=MyKey&libraries=places"></script> 

Javascript代碼:

jQuery(window).load(function() { 
    var map = new google.maps.Map(document.getElementById('mapCanvas'), { 
    mapTypeId: google.maps.MapTypeId.ROADMAP, 
    streetViewControl: false 
    }); 
    var defaultBounds = new google.maps.LatLngBounds(
    new google.maps.LatLng(41.7033177, -93.0573533), 
    new google.maps.LatLng(41, -93) 
); 

    map.fitBounds(defaultBounds); 

    var input = document.getElementById('addressSearch'); 
    var searchBox = new google.maps.places.SearchBox(input); 
    var markers = []; 

    google.maps.event.addListener(searchBox, 'places_changed', function() { 
    var places = searchBox.getPlaces(); 

    for (var i = 0, marker; marker = markers[i]; i++) { 
     marker.setMap(null); 
    } 

    markers = []; 
    var bounds = new google.maps.LatLngBounds(); 

    for (var i = 0, place; place = places[i]; i++) { 
     var place = places[i]; 
     var marker = new google.maps.Marker({ 
     map: map, 
     title: place.name, 
     position: place.geometry.location, 
     draggable: true 
     }); 
     markers.push(marker); 

     bounds.extend(place.geometry.location); 
    } 
    map.fitBounds(bounds); 
    if (markers.length == 1) map.setZoom(17); 
    }); 

    google.maps.event.addListener(map, 'bounds_changed', function() { 
    var bounds = map.getBounds(); 
    searchBox.setBounds(bounds); 
    }); 
}); 

此代碼是從谷歌的開發者網站採取從示例與文本搜索字段,所以它應該工作得很好。 2天前,它運行良好。現在它不。問題是getPlaces()方法返回一個空格字符串,而不是數組,因爲它應該。我在這裏錯過了什麼?

更新:好的,我的問題還不夠清楚。什麼是搜索框中的自動完成功能。什麼不工作是places_changed事件,特別是線

var places = searchBox.getPlaces(); 

places變量應包含數組,因此,在未來for循環,它會創建標記的數組,並把它們在地圖上。相反,它返回的是一個空字符串。

+0

進入「自由車站,加利福尼亞州聖地亞哥的歷史性Decatur路「(Google示例)(https://google-developers.appspot.com/maps/documentation/javascript/examples/places-searchbox)返回2個地方給我。你有沒有工作的例子(或者是一個顯示問題或者jsfiddle的實例)? – geocodezip

+0

在文檔中您看到了google.maps.places.SearchBox()構造函數? – Marcelo

+0

這也是我的問題,但它是在示例中(鏈接在我以前的評論中),只是沒有在地方圖書館文檔(這當然使它危險,因爲無證件的事情可以並且確實會改變......) – geocodezip

回答

7

相反的:

var searchBox = new google.maps.places.SearchBox(input); 

嘗試:的

var searchBox = new google.maps.places.Autocomplete(input); 

,而是

var places = searchBox.getPlaces(); 

嘗試

var place = searchBox.getPlace(); 
+0

採取了點。我不應該使用不穩定的版本。代碼幾天前完美運行,我懷疑谷歌同時改變了一些事情。我將切換到自動完成,我已經測試過它,它的工作原理。謝謝你們的迴應。 –

+0

非常歡迎!隨意投票有用的答案。 ;-) – Marcelo