getPlaces() 関数が以下のスペース文字列を返す理由を誰か教えてもらえますか?
head 要素には、Google マップ スクリプトへのリンクがあります。
<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);
});
});
このコードは、Google の開発者サイト (テキスト検索フィールドの例) から取得したものであるため、正常に動作するはずです。2日前、それはうまくいきました。今はそうではありません。問題は、getPlaces()
メソッドが本来の配列ではなく、スペース文字を含む文字列を返すことです。ここで何が欠けていますか?
更新:わかりました、私の質問は十分に明確ではありませんでした。機能するのは、検索ボックスのオートコンプリート機能です。機能しないのはplaces_changed
イベント、特に行です
var places = searchBox.getPlaces();
places
変数には配列が含まれている必要があります。これにより、次のループfor
でマーカーの配列が作成され、マップに配置されます。代わりに、空の文字列が返されます。