Google Maps&Places APIを使用して、近くのレストランやその他のアトラクションを見つけるためのアプリケーションを作成しています。情報を取得するためにグーグルプレイス検索機能を使用していました
var service = new google.maps.places.PlacesService(map);
service.search(request, callback);
しかし、検索を使用して作成したマーカーのフォーマットされたアドレスのように、必要な値が返されないことに気付きました。今私が混乱しているのは、getDetails()
関数を使用するために必要なこの追加情報を取得することです。これは、上記で使用した検索機能を置き換える必要がありますか、それともしばらくしてから配置する必要がありますか?グーグルが彼らのウェブサイトでそれを説明するとき、それは検索関数を置き換える必要があるように見えます。例では、それは同じ正確なパラメータを取り、検索関数とまったく同じように実行されますが、私がそれを行うと、それは単に何も返さないからですまったく場所。これが私が達成しようとしていることを説明するのに役立つ私のコードのビットです。
//Function for finding destination types. Receives destination type as a string.
function findDestinationType(where)
{
request = null;
var request =
{
location: point,
radius: 2500,
types: [where]
};
var service = new google.maps.places.PlacesService(map);
service.getDetails(request, callback);
}
//Call Back to fill array with markers & locations
function callback(results, status)
{
if (status == google.maps.places.PlacesServiceStatus.OK)
{
initialize();
iterator = 0;
markerArr = [];
for (var i = 0; i < results.length; i++)
{
markerArr.push(results[i].geometry.location);
result = results[i];
createMarker(results[i]);
}
}
else
{
alert("Sorry, there are no locations in your area");
}
}
//Function to create marker
function createMarker(place)
{
var marker = new google.maps.Marker(
{
position: markerArr[iterator],
map: map,
draggable: false,
animation: google.maps.Animation.DROP
})
//alert(markerArr[iterator]);
markersA.push(marker);
iterator++;
google.maps.event.addListener(marker, 'click', function()
{
console.log('clicked');
infowindow.setContent(place.name);
infowindow.open(map, this);
//directionsDisplay.setMap(map);
});
}