Обнаружение гео-URI-поддержки

Есть ли способ с помощью JavaScript проверить, поддерживает ли клиент-браузер схему GEO-URI?

Я хочу показать координаты для неподдерживаемых браузеров в качестве ссылки на карту

<a href='http://osm.org/#map=18/52.51627/13.37769'>Berlin</a>

и для поддерживаемых браузеров (таких как смартфоны) в качестве ссылки на их собственные нативные приложения.

<a href='geo:52.51627,13.37769'>Berlin</a>

2 ответа

Решение

Нет, нет Или нет geo Протокол доступен не до браузера, а из-за операционной системы. Браузер Android не знает, может ли он его поддерживать, он спрашивает подсистему, есть ли у него обработчик для geo URI, и если это так, откройте его. Единственный способ узнать, что система поддерживает пользовательский URI, - это попытаться открыть ссылку и посмотреть, работает ли она. Не было бы способа сделать это автоматически без полного вмешательства пользователя.

Хороший пример того, как лучше всего это сделать, - это maps.apple.com от Apple. Они используют сниффинг UA на стороне сервера, чтобы перенаправить maps.apple.com на лучший доступный сайт.

Попытка перейти на http://maps.apple.com/?q=cupertino в любом браузере Mavericks приведет к отправке 302 на maps:// url (пользовательский URI для приложения Maps.app). То же самое для устройств iOS. Если это неопознанный браузер, он будет перенаправлен на соответствующий адрес maps.google.com, так как у них нет своего собственного веб-присутствия карт.

Другие вопросы по тегам