日期:2014-05-17  浏览次数:20866 次

C#窗体程序中操作谷歌地图

对谷歌地图操作使用的是WebBrowser控件,通过对javascript的操作来实现对谷歌地图的各种操作,所以首先要创建一个html文件,并赋给WebBrowser的URl:

<!DOCTYPE html>
<html>
	<head>
		<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
		<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
		<title>Google Maps</title>
		<link href="http://code.google.com/apis/maps/documentation/javascript/examples/default.css" rel="stylesheet" type="text/css" />
		<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
		<script type="text/javascript">
		
		var map;

		function initialize() {//初始化
			var myLatlng = new google.maps.LatLng( 34.259442,108.947071);
			var myOptions = {
				zoom: 10,
				center: myLatlng,
				mapTypeId: google.maps.MapTypeId.ROADMAP
			}
			map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
		}

		function zoomIn(){//放大函数
			var zoomLevel = map.getZoom();
			if(zoomLevel < 21){
				zoomLevel += 1;
				map.setZoom(zoomLevel);
			}
		}

		function zoomOut(){//缩小函数
			var zoomLevel = map.getZoom();
			if(zoomLevel > 0){
				zoomLevel -= 1;
				map.setZoom(zoomLevel);
			}
		}

		function markLocation(x,y){//标记某个位置
			var myLatlng = new google.maps.LatLng(x, y);
			map.setCenter(myLatlng);	
			marker = new google.maps.Marker({
			map: map,
			position: myLatlng,
			draggable:true,
			title:"纬度:"+x+" 经度:"+y
			});
		}
		
		</script>
	</head>
	<body onload="initialize()">
	  <div id="map_canvas"></div>
	</body>
</html>

?操作地图的简单函数都写在javascript里

C#源文件如下

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace GoogleMapDemo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            string url = Application.StartupPath + "/map-simple.html";
            webBrowser1.Url = new Uri(url);//指定url
        }

        private void toolStripButtonStart_Click(object sender, EventArgs e)
        {
            webBrowser1.Document.InvokeScript("initialize");//执行jiavascript
        }

        private void toolStripButtonZoomIn_Click(object sender, EventArgs e)
        {
            webBrowser1.Document.InvokeScript("zoomIn");
        }

        private void toolStripButtonZoomOut_Click(object sender, EventArgs e)
        {
            webBrowser1.Document.InvokeScript("zoomOut");
        }

        private void toolStripButtonMark_Click(object sender, EventArgs e)
        {
            object[] obj = { toolStripTextBox1.Text, toolStripTextBox2.Text };
            webBrowser1.Document.InvokeScript("markLocation", obj);
        }
    }
}
?


?