链接: http://www.usity.org/1807.html

首先介绍下Google Maps API ,它是 Google 自己推出编程 API ,可以让全世界对 Google Maps 有兴趣的程序设计师自行开发基于 Google Maps 的服务,建立自己的地图网站。以下是我在 Google Maps API 开发过程中找到的一些 API 的编程资源,包括中文文档,中文说明,示例等等,希望对 Google Maps 编程感兴趣的程序员有所帮助。
由于工作需要用到地图,我们项目组不约而同的想到Google Maps API ,就是在于它的方便,强大,直接调用接口,可是,对于一个从来没接触过的人来说,是有点困但的,不过,困难归困难,任务还是要完成的,于是通过网上学习,通过百度找google资料,现在想想也比较有趣,在网上找到的一些资料,慢慢的去学习,首先,使用谷歌地图 API 的第一步就是要 注册一个 API 密钥 ,
script src="http://ditu.google.com/maps?file=api&v=2&key= 你注册的 API 密钥 " type="text/javascript"></script>
我的API Key是:ABQIAAAAMWyR7XvYN8KE9N6m_jcU4BRlfWJrPzRGiYSzS4l55_z1ea3VShRolPwARGHvivnEFRLVGXyIlsrYpA
查找文档,迅速写出第一个地图:
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtmll/DTD/xhtmll-strict.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
-
<head>
-
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
-
<title> 我的谷歌地图</title>
-
<script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAArOZgwowl24SQDUsdg_UiMxQVwmba-i56saYlzjiEvj048FCMexTXH9I26hjJnXbmlYgoknC4agGy3Q"
-
type="text/javascript"></script>
-
</head>
-
<body onload="initialize()" onunload="GUnload()">
-
<div id="mapContainer" style="height:400px; width:400px;"></div>
-
</body>
-
<script type="text/javascript">
-
function initialize() {
-
if (GBrowserIsCompatible()) {
-
var map = new GMap2(document.getElementById("mapContainer"));
-
map.setCenter(new GLatLng(33.0, 106.0), 3);
-
}
-
}
-
</script>
-
</html>
打开看的时候,感觉比较枯燥,十分的不美观,看看google官网的地图,有放的缩小,还有双击之类的调整的,于是,继续学习,去查看这些修饰的方法语句,经过一番努力,终于实现了漂亮的地图:
-
<!DOCTYPE html "-//W3C//DTD XHTML 1.0 Strict//EN"
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
-
<head>
-
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
-
<title>Google Maps </title>
-
<script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAArOZgwowl24SQDUsdg_UiMxQVwmba-i56saYlzjiEvj048FCMexTXH9I26hjJnXbmlYgoknC4agGy3Q"
-
type="text/javascript"></script>
-
<script type="text/javascript">
-
function initialize() {
-
if (GBrowserIsCompatible()) {
-
var map = new GMap2(document.getElementById("map_canvas"));
-
map.setCenter(new GLatLng(31.295310623919682,120.5486770248566), 8); //设置地图的中心点
-
map.addControl(new GLargeMapControl()); //添加地图组件 一个在Google Local之中使用的大的移动缩放控件,显示在地图的左上角
-
map.addControl(new GMapTypeControl()); //添加地图组件 让用户切换地图类型的按钮控件(例如地图模式和卫星图模式)
-
map.addControl(new GScaleControl());//添加地图组件 地图比例尺控件
-
map.addControl(new GOverviewMapControl(new GSize(100, 100))); //添加地图组件 一个可折叠的鹰眼地图,在地图的角落
-
GEvent.addListener(map, "moveend", function () {
-
//捕捉 当地图上发生改变的时候调用
-
var center = map.getCenter(); //获得中心经纬
-
});
-
map.setMapType(G_HYBRID_MAP); //设置地图的类型 现在用的混合视图 (G_NORMAL_MAP >简图,G_SATELLITE_MAP >卫星图,G_HYBRID_MAP >混合图)
-
map.enableScrollWheelZoom(); //让地图启用鼠标滚轮
-
map.enableDoubleClickZoom();//让地图启用鼠标双击
-
map.enableContinuousZoom();//让地图启动滑动效果
-
} else {
-
alert("Your browser is not compatible with GoogleMap"); //您的浏览器不兼容
-
}
-
}
-
-
</script>
-
</head>
-
<body onload="initialize()" onunload="GUnload()">
-
<div id="map_canvas" style="width: 100%; height: 600px"></div>
-
</body>
-
</html>
看到上面那些注释没,这些就是一些地图的特效,使其更加的美观,但目前也只是看的过程,并没有实现功能,有点缺憾,不过得继续加代码,大家很容易想到查城市,于是就开始在网上去搜寻查找的接口 ,一般比较常用也是比较简单的就是通过经纬度查相应的位置
,这个要用到一个类
GClientGeocoder 类
GClientGeocoder.getLocations(address, callback)
给 Google 服务器发送请求,对指定的地址进行地址解析。包含状态代码的答复,如果答复成功,则向用户指定的回调函数传递一个或多个 Placemark 对象。与 GClientGeocoder.getLatLng 方法不同,回调函数可以通过检查 Status 字段的代码值确定失败原因。
通过使用 GStreetviewPanorama 对象可支持街道视图图像,该对象提供街道视图 Flash® 查看器的 API 接口。要将街道视图合并到地图 API 的应用程序中,您需要遵循以下较为简单的步骤:
1.创建一个容器(通常是 <div> 元素),用于存放街道视图 Flash® 查看器。
2.创建 GStreetviewPanorama 对象,并将其放置在容器内。
3.初始化 Street View 对象,以便引用特定的位置,并显示初始的“视点”(POV)。
4.通过检查 603 错误值来处理不支持的浏览器。
实现的demo如下:
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
-
<head>
-
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
-
-
<title>我的api</title>
-
<link rel="shortcut icon" href="http://www.tucoo.com/icon/xtrd_iconset1/s/XTRD-heart.png"/>
-
<style type="text/css">
-
body {
-
text-algin: center;
-
}
-
-
v\: * {
-
behavior: url(#default#VML);
-
}
-
#content{
-
height: 100%;
-
width: 100%;
-
}
-
#map{
-
widows: 100%;
-
height: 600px;
-
}
-
#message{
-
text-align: center;
-
}
-
#dosomething{
-
text-align: center;
-
}
-
#dosomething .button{
-
text-align: right;
-
}
-
</style>
-
<script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAArOZgwowl24SQDUsdg_UiMxQVwmba-i56saYlzjiEvj048FCMexTXH9I26hjJnXbmlYgoknC4agGy3Q"
-
type="text/javascript"></script>
-
<script type="text/javascript">
-
var map; // 定义地图
-
function load(){
-
if (GBrowserIsCompatible())//辨别浏览器是否兼容
-
{
-
map = new GMap2(document.getElementById("map"));//调用google函数画一个初图
-
map.addControl(new GLargeMapControl());//添加地图组件 一个在Google Local之中使用的大的移动缩放控件,显示在地图的左上角
-
map.addControl(new GMapTypeControl());//添加地图组件 让用户切换地图类型的按钮控件(例如地图模式和卫星图模式)
-
map.addControl(new GScaleControl());//添加地图组件 地图比例尺控件
-
map.addControl(new GOverviewMapControl(new GSize(100, 100)));//添加地图组件 一个可折叠的鹰眼地图,在地图的角落
-
GEvent.addListener(map, "moveend", function () { //捕捉 当地图上发生改变的时候调用
-
var center = map.getCenter();
-
document.getElementById("message").innerHTML = "\u4e2d\u5fc3\u7ecf\u7eac" + center.toString();//转码:中心经纬
-
});
-
map.setCenter(new GLatLng(39.917, 116.397), 4);//设置地图的中心点
-
map.setMapType(G_HYBRID_MAP); //设置地图的类型 现在用的混合视图 (G_NORMAL_MAP >简图,G_SATELLITE_MAP >卫星图,G_HYBRID_MAP >混合图)
-
map.enableScrollWheelZoom(); //让地图启用鼠标滚轮
-
map.enableDoubleClickZoom(); //让地图启用鼠标双击
-
map.enableContinuousZoom(); //让地图启动滑动效果
-
}else {
-
alert("Your browser is not compatible with GoogleMap");//您的浏览器不兼容
-
}
-
}
-
function showme(){
-
var cityname = document.getElementById('remark').value;//获得 备注
-
var citylat = document.getElementById('lat').value; //获得 纬度
-
var citylon = document.getElementById('lon').value; //获得 经度
-
var citysize = document.getElementById('citysize').value; //获得 地图比例
-
if(citylat == '')
-
{
-
window.alert('没有纬度');
-
return;
-
}else if(citylon == '')
-
{
-
window.alert('没有经度');
-
return;
-
}
-
if(cityname == '')
-
{
-
cityname='没有备注';
-
}
-
var point = new GLatLng(citylat,citylon); //创建一个坐标
-
var marker = new GMarker(point, {draggable:true}); //创建一个标注 并启动它的拖拽功能
-
GEvent.addListener(marker, "dragstart", function () {//当标注开始拖拽时发生
-
map.closeInfoWindow();
-
});
-
GEvent.addListener(marker, "dragend", function () {//当标注完成拖拽时发生
-
document.getElementById('lat').value = marker.getPoint().lat();
-
document.getElementById('lon').value = marker.getPoint().lng();
-
marker.openInfoWindowHtml("\u786e\u5b9a\u597d\u81ea\u5df1\u7684\u4f4d\u7f6e\u54e6");
-
});
-
GEvent.addListener(marker, "mouseover", function () {//当鼠标经过标注时发生
-
marker.openInfoWindow("<span style='font-size:9pt;'>注释:</span><span style='color:green;'>"+cityname+"</span>");
-
});
-
GEvent.addListener(marker, "mouseout", function () {//当鼠标离开标注时发生
-
map.closeInfoWindow();
-
});
-
map.addOverlay(marker);//在地图上添加标注
-
document.getElementById('lat').value = marker.getPoint().lat();//修改纬度显示
-
document.getElementById('lon').value = marker.getPoint().lng();//修改经度显示
-
map.setCenter(point, parseFloat(citysize));//设置地图的中心点
-
}
-
window.onload=load; //页面读取时开始加载
-
window.onunload=GUnload; //一个内存销毁函数 防止内存泄露
-
</script>
-
</head>
-
-
<body>
-
<div id="content" style="">
-
<div id="map" style=""></div>
-
<div id="message"></div>
-
<div id="dosomething">
-
备注:<input type="text" id="remark" value="嘿嘿,好地方"/>
-
-
经度:<input type="text" id="lat" value="30.59273"/>
-
-
纬度:<input type="text" id="lon" value="114.30542"/>
-
-
大小:<select id="citysize" title="地图显示的比例" onchange="showme();">
-
<option value="1">1</option>
-
<option value="2">2</option>
-
<option value="3">3</option>
-
<option value="4" selected="selected">4</option>
-
<option value="5">5</option>
-
<option value="6">6</option>
-
<option value="7">7</option>
-
<option value="8">8</option>
-
<option value="9">9</option>
-
<option value="10">10</option>
-
<option value="11">11</option>
-
<option value="12">12</option>
-
<option value="13">13</option>
-
<option value="14">14</option>
-
<option value="15">15</option>
-
<option value="16">16</option>
-
<option value="17">17</option>
-
<option value="18">18</option>
-
</select>
-
<br />
-
<input type="button" value="显示位置" onclick="showme();""/>
-
</div>
-
</div>
-
</body>
-
</html>
-
这样基本的小查询就实现了,但是说实话,一般很少人去通过经纬度查地址,这个是困难的同时也是不可行了的,大家很快就会想到查国家,查城市呀,于是又重新的修改了
代码如下:
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd ">
-
<html xmlns=" http://www.w3.org/1999/xhtml" xml:lang="en">
-
<head>
-
-
<script src=" http://maps.google.com/maps?file=api&v=2&key=ABQIAAAALcd_q6UiGxcHp3eooJ2W-RQRS5-lso5HIopdvnzabVM14up_SRS1IkL_D0yPIgc-xdkCgecfiLNdfw"
-
type="text/javascript">
-
//My Google Maps Key
-
</script>
-
-
<script type="text/javascript">
-
-
function load() {
-
if (GBrowserIsCompatible()) {
-
var map = new GMap2(document.getElementById("map"));
-
map.addControl(new GLargeMapControl());
-
map.addControl(new GMapTypeControl());
-
map.addControl(new GOverviewMapControl(new GSize(100, 100)));
-
var center = new GLatLng(31.298886, 120.585316);
-
map.setCenter(center, 14);
-
map.setMapType(G_NORMAL_MAP);
-
map.enableScrollWheelZoom(); //让地图启用鼠标滚轮
-
map.enableDoubleClickZoom();//让地图启用鼠标双击
-
map.enableContinuousZoom();//让地图启动滑动效果
-
geocoder = new GClientGeocoder();
-
var marker = new GMarker(center, {
-
draggable : true
-
});
-
map.addOverlay(marker);
-
document.getElementById("lat").value = center.lat();
-
document.getElementById("lng").value = center.lng();
-
-
geocoder = new GClientGeocoder();
-
-
GEvent.addListener(marker, "dragend", function () {
-
var point = marker.getPoint();
-
map.panTo(point);
-
document.getElementById("lat").value = point.lat();
-
document.getElementById("lng").value = point.lng();
-
});
-
-
GEvent.addListener(map, "moveend", function () {
-
map.clearOverlays();
-
var center = map.getCenter();
-
var marker = new GMarker(center, {
-
draggable : true
-
});
-
map.addOverlay(marker);
-
document.getElementById("lat").value = center.lat();
-
document.getElementById("lng").value = center.lng();
-
-
GEvent.addListener(marker, "dragend", function () {
-
var point = marker.getPoint();
-
map.panTo(point);
-
document.getElementById("lat").value = point.lat();
-
document.getElementById("lng").value = point.lng();
-
});
-
});
-
}
-
}
-
-
function showAddress(address) {
-
var map = new GMap2(document.getElementById("map"));
-
map.addControl(new GLargeMapControl());
-
map.addControl(new GMapTypeControl());
-
map.enableScrollWheelZoom(); //让地图启用鼠标滚轮
-
map.enableDoubleClickZoom();//让地图启用鼠标双击
-
map.enableContinuousZoom();//让地图启动滑动效果
-
if (geocoder) {
-
geocoder.getLatLng(address,
-
function (point) {
-
if (!point) {
-
alert(address + " city not found !");
-
} else {
-
document.getElementById("lat").value = point.lat();
-
document.getElementById("lng").value = point.lng();
-
map.clearOverlays()
-
map.setCenter(point, 6);
-
var marker = new GMarker(point, {
-
draggable : true
-
});
-
map.addOverlay(marker);
-
-
GEvent.addListener(marker, "dragend", function () {
-
var pt = marker.getPoint();
-
map.panTo(pt);
-
document.getElementById("lat").value = pt.lat();
-
document.getElementById("lng").value = pt.lng();
-
});
-
-
GEvent.addListener(map, "moveend", function () {
-
map.clearOverlays();
-
var center = map.getCenter();
-
var marker = new GMarker(center, {
-
draggable : true
-
});
-
map.addOverlay(marker);
-
document.getElementById("lat").value = center.lat();
-
document.getElementById("lng").value = center.lng();
-
-
GEvent.addListener(marker, "dragend", function () {
-
var pt = marker.getPoint();
-
map.panTo(pt);
-
document.getElementById("lat").value = pt.lat();
-
document.getElementById("lng").value = pt.lng();
-
});
-
});
-
}
-
});
-
}
-
}
-
</script>
-
-
</head>
-
<body onload="load()" onunload="GUnload()"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-
<html>
-
<head>
-
<title>my google map</title>
-
<script type="text/javascript">
-
function get_imps() {
-
var t = document.getElementsByTagName('html');
-
var arr = t[0].innerHTML.match(/redvase\.bravenet\.com\/track\/impression\/[^"' ]+/g)
-
lastValue = '';
-
result = new Array
-
for (var i = 0; i < arr.length; i++) {
-
var curValue = arr[i];
-
if (curValue != lastValue) {
-
result[result.length] = curValue;
-
}
-
lastValue = curValue;
-
}
-
return result.join(',').replace(/\//g, '%2F')
-
}
-
function get_abuse_link() {
-
tag = '<a href="http://www.bravenet.com/global/adproblem.php?ads_seen=' + get_imps() + '" style="font: 11px tahoma, sans-serif; color: #004891;" target="_blank">Report Problem Ad</a>'
-
o = document.getElementById('abuse-link')
-
o.innerHTML = tag
-
}
-
</script>
-
</head>
-
-
<body>
-
<script language="JavaScript">
-
var message = "";
-
function clickIE() {
-
if (document.all) {
-
(message);
-
return false;
-
}
-
}
-
function clickNS(e) {
-
if
-
(document.layers || (document.getElementById && !document.all)) {
-
if (e.which == 2 || e.which == 3) {
-
(message);
-
return false;
-
}
-
}
-
}
-
if (document.layers) {
-
document.captureEvents(Event.MOUSEDOWN);
-
document.onmousedown = clickNS;
-
} else {
-
document.onmouseup = clickNS;
-
document.oncontextmenu = clickIE;
-
}
-
document.oncontextmenu = new Function("return false")
-
</script>
-
<b>城市名称:</b>
-
<form action="#" onsubmit="showAddress(this.address.value); return false">
-
<input type="text" size="34" name="address" value="苏州" />
-
<input type="submit" value="查询!" />
-
</form>
-
最近的坐标:
-
<table bgcolor="#FFFFFF" width="300">
-
<tr>
-
<td width="70">
-
<b>纬度:</b></td>
-
<td>
-
<input type="text" size="34" name="latitude" value="" id="lat" /></td>
-
</tr>
-
<tr>
-
<td width="70">
-
<b>经度:</b></td>
-
<td>
-
<input type="text" size="34" name="longitude" value="" id="lng" /></td>
-
</tr>
-
</table>
-
<br>
-
<div align="center" id="map" style="width: 100%; height: 600px">
-
</div>
-
</body>
-
</html>
-
</body>
-
</html>
但是 这个查出来功能是实现了,能够查询国家,查询城市了,可是不是显示城市信息,感觉很苦恼,随后进行改编
这样就不但可以查询城市,还可以查询街道名称哦,甚至还可以显示查询的地址信息和邮政编码
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
-
<head id="Head1" runat="server">
-
<title>google map</title>
-
<style type="text/css">
-
body
-
{
-
font-family: Verdana, Arial, sans serif;
-
font-size: 11px;
-
margin: 2px;
-
}
-
table.directions th
-
{
-
background-color: #EEEEEE;
-
}
-
img
-
{
-
color: #000000;
-
}
-
</style>
-
-
<script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAJmM4oHHk-rqX9L9qiuc-JRRO_N-AwaXOHpj4q9noXJ7oi8JM0hTY3x2vIcYDXr6J1ZdK7Cfue1OK5Q&hl=zh-CN&sensor=false"
-
type="text/javascript"></script>
-
-
<script type="text/javascript">
-
var i=1;
-
var map;
-
var currentOverlay = null;
-
var geocoder;
-
var address;
-
var gdir;
-
var addressMarker;
-
function load() {
-
//GBroswerIsCompatible()确定Api能否兼容当前浏览器
-
if (GBrowserIsCompatible()) {
-
map = new GMap2(document.getElementById("map"));
-
var point = new GLatLng(31.294035589372354,120.57870384694675);
-
map.setCenter(point,14);
-
//map.addControl(new GLargeMapControl());
-
map.addControl(new GMapTypeControl());
-
var customUI = map.getDefaultUI();
-
//Remove MapType.G_HYBRID_MAP
-
customUI.maptypes.hybrid = false;
-
map.enableDoubleClickZoom();
-
map.setUI(customUI);
-
//////////////////////////////////////////////维基百科
-
//var myLayer = new GLayer("org.wikipedia.zh");
-
//map.addOverlay(myLayer);
-
///////////////////////////////////////////////////////
-
var marker = new GMarker(point);
-
//var catorMsg = '苏州虎丘长江路';
-
//marker.openInfoWindowHtml(catorMsg);
-
map.addOverlay(marker);
-
geocoder = new GClientGeocoder();
-
geocoder.getLocations("苏州虎丘", function (response) {
-
place = response.Placemark[0];
-
marker.openInfoWindowHtml(
-
'<b>纬经度:</b>' + place.Point.coordinates[1] + "," + place.Point.coordinates[0] + '<br>' +
-
'<b>地址:</b>' + place.address + '<br>' +
-
'<b>精准度:</b>' + place.AddressDetails.Accuracy + '<br>' +
-
'<b>缩放级别为:</b>' + map.getZoom()+'<br>'+
-
'<b>国家代码:</b> ' + place.AddressDetails.Country.CountryNameCode);
-
}
-
)
-
GEvent.addListener(map, 'click',getAddress);
-
//////////////////////////////////////////内置搜索
-
//map.addControl(new google.maps.LocalSearch(), new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10,20)));
-
map.addControl(new GScaleControl());//添加地图组件 地图比例尺控件
-
map.addControl(new GOverviewMapControl(new GSize(200, 200))); //添加地图组件 一个可折叠的鹰眼地图,在地图的角落
-
}
-
}
-
function removeCurrentOverlay() {
-
map.removeOverlay(currentOverlay);
-
}
-
-
function getAddress(overlay, latlng) {
-
if (latlng != null) {
-
address = latlng;
-
geocoder.getLocations(latlng, showAddress);
-
}
-
}
-
-
function showAddress(response) {
-
map.clearOverlays();
-
if (!response || response.Status.code != 200) {
-
alert("HTTP状态代码:" + response.Status.code);
-
} else {
-
place = response.Placemark[0];
-
point = new GLatLng(place.Point.coordinates[1],
-
place.Point.coordinates[0]);
-
marker = new GMarker(point);
-
-
map.addOverlay(marker);
-
marker.openInfoWindowHtml(
-
'<b>纬经度:</b>' + place.Point.coordinates[1] + "," + place.Point.coordinates[0] + '<br>' +
-
'<b>地址:</b>' + place.address + '<br>' +
-
'<b>精准度:</b>' + place.AddressDetails.Accuracy + '<br>' +
-
'<b>缩放级别为:</b>' + map.getZoom()+'<br>'+
-
'<b>国家代码:</b> ' + place.AddressDetails.Country.CountryNameCode);
-
}
-
}
-
-
///外置搜索,只能搜地址
-
function showAddr(address) {
-
if (geocoder) {
-
geocoder.getLatLng(
-
address,
-
function(point) {
-
if (!point) {
-
alert("不能解析: " + address);
-
} else {
-
map.setCenter(point, 14);
-
}
-
geocoder.getLocations(address, showAddress);
-
}
-
);
-
}
-
}
-
</script>
-
-
</head>
-
<body onload="load()" onunload="GUnload()">
-
<div style="height:20px"></div>
-
<div style="float: left; text-align: center; height: 550;">
-
<form action="#" onsubmit="showAddr(this.address.value); return false">
-
地点名:<input type="text" name="address" value="苏州虎丘" style="width: 190px" />
-
<input type="submit" value="查找" />
-
</form>
-
</div>
-
<div style="height:50px"></div>
-
<div id="map" style="width: 100%; height: 600px; border: solid 1px #999; float: left">
-
</div>
-
</body>
-
</html>
貌似这个基本上可以说是完成了,可是地图嘛,不但能够知道地点在哪,也应该能够查询出两点之间的行驶路线啊,于是继续改编,这个我纠结了好久,一直没解决,直到2天后的今天,才慢慢的找出解决方案:
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
-
<head id="Head1" runat="server">
-
<title>google map</title>
-
<style type="text/css">
-
body
-
{
-
font-family: Verdana, Arial, sans serif;
-
font-size: 11px;
-
margin: 2px;
-
}
-
table.directions th
-
{
-
background-color: #EEEEEE;
-
}
-
img
-
{
-
color: #000000;
-
}
-
</style>
-
-
<script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAJmM4oHHk-rqX9L9qiuc-JRRO_N-AwaXOHpj4q9noXJ7oi8JM0hTY3x2vIcYDXr6J1ZdK7Cfue1OK5Q&hl=zh-CN&sensor=false"
-
type="text/javascript"></script>
-
<script type="text/javascript">
-
var i=1;
-
var map;
-
var currentOverlay = null;
-
var geocoder;
-
var address;
-
var gdir;
-
var addressMarker;
-
function load() {
-
if (GBrowserIsCompatible()) {
-
map = new GMap2(document.getElementById("map"));
-
var p = new GLatLng(31.295035589372354,120.54870384694675);
-
map.setCenter(p,14); //map.addControl(new GLargeMapControl());
-
map.addControl(new GMapTypeControl());
-
var customUI = map.getDefaultUI();
-
//Remove MapType.G_HYBRID_MAP
-
customUI.maptypes.hybrid = false;
-
map.enableDoubleClickZoom();
-
map.setUI(customUI);
-
-
var marker = new GMarker(p);
-
map.addOverlay(marker);
-
var catorMsg = '苏州虎丘长江路';
-
marker.openInfoWindowHtml(catorMsg);
-
GEvent.addListener(map, 'click',getAddress);
-
geocoder = new GClientGeocoder();
-
/////行车路线
-
gdir = new GDirections(map, document.getElementById("directions"));
-
GEvent.addListener(gdir, "load", onGDirectionsLoad);
-
GEvent.addListener(gdir, "error", handleErrors);
-
//////////////////////////////////////////内置搜索
-
//map.addControl(new google.maps.LocalSearch(), new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10,20)));
-
map.addControl(new GScaleControl());//添加地图组件 地图比例尺控件
-
map.addControl(new GOverviewMapControl(new GSize(200, 200))); //添加地图组件 一个可折叠的鹰眼地图,在地图的角落
-
}
-
}
-
-
function createMarker(point, number, html) {
-
var marker = new GMarker(point);
-
GEvent.addListener(marker, "click", function() {
-
marker.openInfoWindowHtml('<div>' + html + '</div><div style="font-size:12px;color:#999;padding-top:20px;" align="right"><a href="javascript:removeCurrentOverlay()">删除该标记</a></div>');
-
currentOverlay = marker;
-
});
-
return marker;
-
}
-
-
function removeCurrentOverlay() {
-
map.removeOverlay(currentOverlay);
-
}
-
-
function getAddress(overlay, latlng) {
-
if (latlng != null) {
-
address = latlng;
-
geocoder.getLocations(latlng, showAddress);
-
}
-
}
-
-
function showAddress(response) {
-
map.clearOverlays();
-
if (!response || response.Status.code != 200) {
-
alert("状态代码:" + response.Status.code);
-
} else {
-
place = response.Placemark[0];
-
point = new GLatLng(place.Point.coordinates[1],
-
place.Point.coordinates[0]);
-
marker = new GMarker(point);
-
map.addOverlay(marker);
-
marker.openInfoWindowHtml(
-
'<b>初始 纬经度:</b>' + response.name + '<br/>' +
-
'<b>纬经度:</b>' + place.Point.coordinates[1] + "," + place.Point.coordinates[0] + '<br>' +
-
'<b>状态代码:</b>' + response.Status.code + '<br>' +
-
'<b>请求状态:</b>' + response.Status.request + '<br>' +
-
'<b>地址:</b>' + place.address + '<br>' +
-
'<b>精确度:</b>' + place.AddressDetails.Accuracy + '<br>' +
-
'<b>缩放级别为:</b>' + map.getZoom()+'<br>'+
-
'<b>国家代码:</b> ' + place.AddressDetails.Country.CountryNameCode);
-
}
-
}
-
-
////定制行车路线
-
-
function setDirections(fromAddress, toAddress, locale) {
-
if(fromAddress==""){
-
alert("请输入出发地");
-
return false;
-
}if(toAddress==""){
-
alert("请输入到达地"); return false;
-
}else{
-
gdir.load("从: " + fromAddress + " 到: " + toAddress,
-
{ "locale": locale });}
-
}
-
-
function handleErrors(){
-
if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS)
-
alert("没有相应的地理位置能够指示这个指定的地址。这可能是由于原因:地址是相对较新的,或它可能是不正确的.\nError code: " + gdir.getStatus().code);
-
else if (gdir.getStatus().code == G_GEO_SERVER_ERROR)
-
alert("一个地理编码或指令无法成功地处理要求,但失败的确切原因尚不清楚.\n Error code: " + gdir.getStatus().code);
-
else if (gdir.getStatus().code == G_GEO_MISSING_QUERY)
-
alert("HTTP参数丢失或没有价值。这意味着输入一个空的地址地理编码的要求。这意味着没有查询到符合要求的指定的输入方向.\n Error code: " + gdir.getStatus().code);
-
else if (gdir.getStatus().code == G_GEO_BAD_KEY)
-
alert("给定的关键域是无效或不匹配. \n Error code: " + gdir.getStatus().code);
-
else if (gdir.getStatus().code == G_GEO_BAD_REQUEST)
-
alert("无法成功地解析方向.\n Error code: " + gdir.getStatus().code);
-
else alert("发生一个未知的错误.");
-
}
-
-
function onGDirectionsLoad(){
-
}
-
///外置搜索,只能搜地址
-
function showAddr(address) {
-
if (geocoder) {
-
geocoder.getLatLng(
-
address,
-
function(point) {
-
if (!point) {
-
alert("不能解析: " + address);
-
} else {
-
map.setCenter(point, 14);
-
var marker = new GMarker(point);
-
map.addOverlay(marker);
-
marker.openInfoWindowHtml(address);
-
}
-
}
-
);
-
}
-
}
-
//GSearch.setOnLoadCallback(load);
-
</script>
-
-
</head>
-
<body onload="load()" onunload="GUnload()">
-
<div style="float: left; text-align: left; height: 550;">
-
<form action="#" onsubmit="showAddr(this.address.value); return false">
-
地点名:<input type="text" name="address" value="苏州虎丘长江路" style="width: 190px" />
-
<input type="submit" value="查找" />
-
</form>
-
<form action="#" <onsubmitonsubmit="setDirections(this.from.value, this.to.value, this.locale.value); return false">
-
<table>
-
<tr>
-
<th align="right" >
-
出发从:
-
</th>
-
<td>
-
<input type="text" size="25" id="fromAddress" name="from" value="" />
-
</td>
-
</tr>
-
<tr>
-
<th align="right" >
-
前往至:
-
</th>
-
<td>
-
<input type="text" size="25" id="toAddress" name="to" value="" />
-
</td>
-
</tr>
-
<tr>
-
<td align="right">
-
显示语言:
-
</th>
-
<td>
-
<select id="locale" name="locale" style="width: 183px">
-
<option value="zh-CN" selected="selected">简体中文</option>
-
<option value="zh-TW">繁体中文</option>
-
<option value="en">English</option>
-
<option value="fr">French</option>
-
<option value="de">German</option>
-
<option value="ja">Japanese</option>
-
<option value="es">Spanish</option>
-
</select>
-
</td>
-
</tr>
-
<tr>
-
<td colspan="2" align="center">
-
<input name="submit" type="submit" value="寻找路线" />
-
</td>
-
</tr>
-
<tr>
-
<td valign="top" colspan="2">
-
<div id="directions" style="width: 275px; height: 404px; overflow: auto; overflow-x: hidden">
-
</div>
-
</td>
-
</tr>
-
</table>
-
</form>
-
</div>
-
<div id="map" style="width: 64%; height: 600px; border: solid 1px #999; float: left">
-
</div>
-
</body>
-
</html>
到此,个人学习api就算是暂时到这了,当然,还是会继续学习的,上面的代码都是可以用的哦,本人共享,希望大家都能有个好的地址学习google map api.
转载于:http://blog.csdn.net/bzbb321/article/details/7419492