基于百度地图API的WinForm地图


      大概去年的这个时候,我用VB写了一个百度地图的Demo,使用了webBrowser加载本地网页的方式,只是限于当时的技术,好多功能都没实现,昨天,我重新对这个程序进行了编写,这一次我使用的是C#。在正式开始之前,先来解决几个问题。

      一、地图

     答:地图调用了百度地图API(http://developer.baidu.com/map/),由于百度地图API是基于javascript的,所以它更适合于web环境。当我们使用它来做WinForm程序的时候,我们需要用到webBrowser控件,然后加载一个包含了百度地图API的本地网页文件。其实处于安全的角度,这个网页更适合放在服务器上,这样不会暴露其中的js代码。

      二、交互

      答:C#和JavaScript属于两种不同的程序,两者怎么交互呢?这里我们选择了一个十分重要的方法:InvokeScript()。

              1、无返回值的js代码与C#交互

               首先,在网页中写入这样一段js代码:

        function CloseDrawing()
        {
             drawingManager.close();
        }

               那么在C#中的调用方式就是:

        private void CloseDrawing()
        {
            webBrowser.Document.InvokeScript("CloseDrawing");
        }

               2、有返回值的js代码与C#交互

                当js代码有返回值时,我们不能直接获取其返回值,我们需要借助一个隐藏的div或者是label来实现传值

                js代码及html结构

       
       
       map.addEventListener("click", function(e)
       {  
         document.getElementById("lng").innerText = e.point.lng;
        document.getElementById("lat").innerText = e.point.lat;
       });
       
               C#中的调用方式
       string lng = webBrowser.Document.GetElementById("lng").InnerText;
string lat = webBrowser.Document.GetElementById("lat").InnerText;

     解决了上述两个问题,那么这个程序的思路就很清晰了,在js里写一个方法,然后通过C#调用这个方法。

     首先是网页代码,关于百度地图API的问题,请自行了解和学习。

















下面是程序的一些截图:

基于百度地图API的WinForm地图_第1张图片

 

基于百度地图API的WinForm地图_第2张图片

 

基于百度地图API的WinForm地图_第3张图片

 

基于百度地图API的WinForm地图_第4张图片

 

基于百度地图API的WinForm地图_第5张图片

 

基于百度地图API的WinForm地图_第6张图片

 

你可能感兴趣的:([编程语言])