在WPF中使用谷歌地图和高德地图

57 篇文章 0 订阅

在桌面软件开发中可能会遇到这样的需求:显示地图。

常用的地图API有Google Map和高德地图。二者都提供了各种平台的API。

为了方便集成,本文使用JavaScriptAPI。

以高德地图为例(因为谷歌的服务在大陆偶尔不稳定)。

高德地图API: http://lbs.amap.com/api/javascript-api/summary-3/

使用之前请先申请APIKey

 

为了使用JavaScript API,我们需要使用一个WebBrowser控件承载网页,然后我们可以在网页中使用JavaScript API。这样我们只需要实现C#和JavaScript语言的接口即可。

      

我们首先创建一个html文件,用于显示地图,仿照高德地图官网的示例,代码如下:

代码参照:http://lbs.amap.com/api/javascript-api/example/a/0101-2/

后台代码如下:

 

运行之后可以看到如下效果:

 

为了实现更复杂的功能,比如我们想添加一个WPF按钮,通过按钮点击在地图上添加一个多边形覆盖物,以实现与地图的交互,我们可以这样做。

代码参照http://lbs.amap.com/api/javascript-api/example/e/0511-2/

按钮点击事件处理函数如下:

private voidbutton1_Click(object sender, RoutedEventArgs e)

        {

           webBrowser.InvokeScript("addPolygon");

        }

通过InvokeScript方法我们实现在C#中调用JavaScript函数。

效果如下:

 

 

现在,我们想传参数到地图进去,比如我们要定位到某个经纬度,我们可以这样做

private voidbutton1_Click(object sender, RoutedEventArgs e)

        {

           webBrowser.InvokeScript("setMapCenter",new Object[]{ 116.205467, 39.907761 });

        }

这样我们就给function setMapCenter(lng,lat)传递了两个参数(其他类型参数类似)。

Html代码参照http://lbs.amap.com/api/javascript-api/example/b/0203-2/

 

 

为了实现更复杂的功能,我们只需要看懂地图API,使用同上的方式交互即可。

另外谷歌地图的API与高德地图API类似,就不再赘述。

Enjoy it!

要在WPF应用程序加载高德地图,可以使用WebView2控件来实现。请按照以下步骤进行操作: 1. 确保您的计算机已安装 WebView2 运行时。可以从 WebView2 下载页面(https://developer.microsoft.com/en-us/microsoft-edge/webview2/)上下载并安装它。 2. 在您的 WPF 项目,确保已安装和启用了 `Microsoft.Web.WebView2` NuGet 包。 3. 在 XAML 添加一个 WebView2 控件,例如: ``` <Window x:Class="WpfApp1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:wvc="clr-namespace:Microsoft.Web.WebView2.Wpf;assembly=Microsoft.Web.WebView2.Wpf" Title="WPF WebView2" Height="450" Width="800"> <Grid> <wvc:WebView2 x:Name="webView" /> </Grid> </Window> ``` 4. 在代码加载高德地图网页。您可以在窗口的 `Loaded` 事件处理程序执行此操作,如下所示: ``` using Microsoft.Web.WebView2.Core; using Microsoft.Web.WebView2.Wpf; namespace WpfApp1 { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); webView.CoreWebView2InitializationCompleted += WebView_CoreWebView2InitializationCompleted; webView.Source = new Uri("https://www.amap.com"); } private async void WebView_CoreWebView2InitializationCompleted(object sender, CoreWebView2InitializationCompletedEventArgs e) { await webView.EnsureCoreWebView2Async(null); } } } ``` 在上述代码,我们首先在 `MainWindow` 构造函数为 `webView` 控件设置初始化完成事件处理程序。然后,我们将高德地图的网址设置为 WebView2 控件的 Source 属性。最后,我们在 `WebView_CoreWebView2InitializationCompleted` 方法调用 `EnsureCoreWebView2Async` 方法来确保 Core WebView2 已初始化。 这样,运行代码后,WebView2 控件就会加载并显示高德地图
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值