UWP没有内置的JavaScript地图API。但是,您可以使用Bing Maps V8地图控件。如您所知,不使用WebView/WebBrowser的基于JavaScript的Windows应用程序会限制使用外部托管的JavaScript文件。有两种方法可以解决这个问题。
首先是将您的地图代码托管在iframe中。如果您的地图功能完全包含,并且您不需要以编程方式从主应用程序更改地图(不太可能),则此方法可以正常工作。 UWP应用程序不会让您在主iframe中的主应用程序和JavaScript代码之间进行通信。
第二个是修改如何引用应用中的起始页面,而不是使用本地上下文,请使用Web上下文。为此,请打开package.appxmanifest,并在起始页面值之前添加“ms-appx-web:///”。可能是“ms-appx-web:///index.html”。这可能会限制您的应用程序在基于JavaScript的UWP应用程序中使用某些较低级别的功能,例如访问文件系统。
在这两种情形,也请执行下列操作:
- 添加以下内容的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的安全性是许多用户使用其他外部主机基于Web的API时遇到的主要限制。解决这个问题的唯一方法是将您的JavaScript应用程序托管在一个Web浏览器控件中,然后在该代码和.NET代码之间添加一个通信层,然后使用.NET代码访问Windows特定的API,但是如果您走这条路线,你不如使用Apache Cordova,它完全适合你。
看看这里:https://openlayers.org/ – TheTanic
@TheTanic谢谢,这看起来像一个有趣的选项,但它需要在接受的答案中描述的解决方法。正如我在“......或其他网络服务”这个问题中所说的那样;这些是用于网站和依靠外部托管的JavaScript,所以不会在应用程序的更正工作更正:哦,这是客户端托管的JavaScript - 很好! – anotherfred
我在我的winjs uwp app中使用了openlayers ..它的作用就像是魅力:D试试吧! – TheTanic