2016-10-30 2 views
0

Есть ли способ включить карты в приложения UWP Windows, написанные на Javascript?Есть ли система управления картой для Javascript UWP-приложений?

Очевидные варианты:

  • UWP карта управления https://msdn.microsoft.com/en-gb/windows/uwp/maps-and-location/controls-map; вся документация предполагает, что это только для приложений XAML
  • Legacy Windows/Windows Phone 8.x Bing maps SDK https://msdn.microsoft.com/en-us/library/hh846481.aspx; эти работы, но основаны на управлении V7.0 AJAX, которое перестанет работать в 2017 году.
  • Bing-карты AJAX v8.0 или другие веб-службы; они предназначены для веб-сайтов и полагаются на внешний Javascript, поэтому не будут работать в приложениях

Спасибо.

+1

Посмотрите здесь: https://openlayers.org/ – TheTanic

+0

@TheTanic спасибо, это выглядит как интересный вариант, но для этого нужны обходные пути, описанные в принятом ответе. Как я сказал в вопросе «... или других веб-сервисах; они предназначены для сайтов и полагаются на внешний Javascript, поэтому не будут работать в приложениях CORRECTION: о, это клиентский javascript - хорошо! – anotherfred

+0

Я использую openlayers в моем winjs uwp app' .. и он работает как шарм: D Попробуйте! – TheTanic

ответ

1

В UWP нет встроенного API карт JavaScript. Однако вы можете использовать элемент управления Bing Maps V8. Как вы знаете, приложения на базе JavaScript, основанные на ОС Windows, которые не используют WebView/WebBrowser, ограничивают использование внешних файлов JavaScript. Существует два пути.

Первый заключается в размещении кода вашей карты внутри iframe. Это прекрасно работает, если функциональность вашей карты полностью включена, и вам не нужно программно вносить изменения в карту из основного приложения (маловероятно). Приложения UWP не позволят вам общаться между вашим основным приложением и кодом JavaScript в iframe.

Во-вторых, чтобы изменить, как вы ссылаетесь на стартовую страницу в своем приложении и вместо использования локального контекста, используйте веб-контекст. Для этого откройте файл package.appxmanifest и добавьте «ms-appx-web: ///» до значения начальной страницы. Вероятно, ms-appx-web: ///index.html. Это может ограничить ваше приложение от использования некоторых функций нижнего уровня в приложениях UWP на основе JavaScript, таких как доступ к файловой системе.

В обоих этих сценариев, а также сделать следующее:

  • Добавьте следующее содержимое URI и установить WinRT доступ к «Все»; "https: // .bing.com" и "https: // .virtualearth.com"
  • В разделе «Возможности» включить «Местоположение». В противном случае скройте локальную кнопку , которая отображается на карте.
  • Одна ваша страница карта, рекомендуется , что вы добавляете следующие главы страницы:

    <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">

Ни одно из этих решений не совершенен. Безопасность в JavaScript на основе ОС Windows UWP является основным ограничением, которое многие пользователи испытывают с другими внешними веб-интерфейсами API. Единственный реальный способ - разместить ваше приложение JavaScript в элементе управления веб-браузера, а затем добавить уровень связи между этим и .NET-кодом, а затем использовать код .NET для доступа к конкретным API-интерфейсам Windows, но если вы идете по этому маршруту , вы можете использовать Apache Cordova, который делает именно это для вас.

+0

Может быть альтернативой этим обходным решениям - посмотрите вышеприведенный комментарий, в котором предлагается, чтобы клиент размещал стороннюю библиотеку javascript для бинговых карт (поэтому я понимаю) – anotherfred

Смежные вопросы