2016-10-30 33 views
0

有没有什么办法可以在用Javascript编写的UWP Windows应用程序中包含地图?是否有Javascript UWP应用程序的地图控件?

明显的选择:

谢谢。

+1

看看这里:https://openlayers.org/ – TheTanic

+0

@TheTanic谢谢,这看起来像一个有趣的选项,但它需要在接受的答案中描述的解决方法。正如我在“......或其他网络服务”这个问题中所说的那样;这些是用于网站和依靠外部托管的JavaScript,所以不会在应用程序的更正工作更正:哦,这是客户端托管的JavaScript - 很好! – anotherfred

+0

我在我的winjs uwp app中使用了openlayers ..它的作用就像是魅力:D试试吧! – TheTanic

回答

1

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,它完全适合你。

+0

这些解决方法可能有其他替代方法 - 请参阅上面的注释,其中建议客户端托管的第三方JavaScript库用于bing地图(所以我知道) – anotherfred

相关问题