Получение ссылки Google Maps от place_id
HeIIo, используя Google Map API с поиском, я могу найти определенное место, а затем сохранить его детали. Тем не менее, массив не содержит ссылку Google Maps, которая открыла бы это место на Google Maps.
Через API я получаю place_id, которого, как мне кажется, должно быть достаточно для создания полной ссылки на Google Maps; Однако я не могу найти способ сделать это. Может кто-нибудь посоветовать мне, как это сделать.
Спасибо за ваше время.
8 ответов
Попробуйте приведенный выше синтаксис. Я надеюсь, что это помогает
https://www.google.com/maps/place/?q=place_id:ChIJp4JiUCNP0xQR1JaSjpW_Hms
Вот официальный URL для поиска placeId
с отступлением к address
если placeId
не существует
https://www.google.com/maps/search/?api=1&query=<address>&query_place_id=<placeId>
токен не требуется, работает на Android, iOS (а также iOS 11) и в Интернете
Есть способ всегда получить правильный URL, но он требует дополнительного запроса.
Вы можете использовать place_id, чтобы получить информацию о месте сhttps://maps.googleapis.com/maps/api/place/details/json?key=YOURAPIKEY&placeid=THEPLACEID
Ответ от этого имеет поле ['result']['url'], которое всегда открывает правильное место. например. https://maps.google.com/?cid=10254754059248426663
Нет документации по ожидаемым параметрам на https://www.google.com/maps/place, поэтому это может быть только обходной путь (по крайней мере, в настоящее время он работает для меня).
Следующий формат URL дает желаемый результат в большинстве случаев:
https://www.google.com/maps/place/[place-name]/@[latitude],[longitude],[zoom]z/
Вы можете создать этот URL на основе названия места и геометрии места
function initialize() {
var ac = new google.maps.places.Autocomplete(document.getElementById('pac'));
google.maps.event.addListener(ac, 'place_changed', function() {
var place = this.getPlace(),
link = document.getElementById('link');
if (!place.geometry) {
link.textContent = '';
} else {
var zoom = 17,
url = 'https://www.google.com/maps/place/' +
encodeURIComponent(place.name) + '/@' +
place.geometry.location.toUrlValue() + ',' +
zoom + 'z/';
link.href = link.textContent = url;
}
});
}
google.maps.event.addDomListener(window, 'load', initialize);
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3&libraries=places">
</script>
<input id="pac" />
<br/>
<a id="link" href="" target="_blank"></a>
У меня была такая же проблема с приложением для iOS, которое перенаправляло пользователей в нужное место (возврат изnearbysearch
API) в картах Google.
Они упоминали выше:
https://www.google.com/maps/place/?q=place_id:ChIJp4JiUCNP0xQR1JaSjpW_Hms
Если вы откроете эту ссылку в своем браузере, она покажет место на веб-сайте карты Google.
Но если вы попытаетесь открыть эту ссылку на мобильном телефоне, вместо этого откроется приложение Google Map (если оно существует на телефоне пользователя), а не перенаправление в сафари. Кроме того, приложение карты Google не показывает место ( эта ссылка будет работать только в браузере ).
После тестирования многих способов создания ссылки для работы как в приложении карты Google, так и в браузере, лучший способ — показать место, которое просто проходит.location
иplace_id
внутри ссылки.
let url = "https://www.google.com/maps/search/?api=1&query=\(placeLatitude)%2C\(placeLongitude)&query_place_id=\(placeId)"
Вы можете использовать Google Embed API и использовать src в качестве ссылки: например:
https://www.google.com/maps/embed/v1/place?key=YOUR_API_KEY
&q=place_id:YOUR_PLACE_ID
Документы: https://developers.google.com/maps/documentation/embed/guide
Что у меня сработало без place_id
https://www.google.com/maps/search/<search term>/@<coordinates>,<zoom level>z
Пример
https://www.google.com/maps/search/Jouvay+Night+Club/@40.6961111,-73.8041667,15z
Вы можете использовать Google Embed API и использовать src в качестве ссылки: например: