`
happysoul
  • 浏览: 403511 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

Google Map API V3 (三) 反向解析物理地址对应的坐标

阅读更多
这里主要的一个重点是使用了google的地理解析包google.maps.Geocoder
当传入值为address信息的时候,即告知google要查找的信息为地理坐标,通常情况下一个正确的地理位置会获得多个返回结果,即使搜索北京也会得到多个点(美国有个地方也叫北京)
通过回调函数的方法function(results, status)可以得到的就是点集合、还有查询状态信息,和HTTP类似同样会有网络连接正常,错误,或者请求太过频繁被屏蔽(测试中连续点击大约20次左右,发现google拒绝再次返回地理信息),必要的用户信息提示还是必须的,不过用户一般不会太在意错误原因,告诉他再次刷新页面就好,或者是查询地理信息不存在没有结果等等
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<meta http-equiv="Content-Type" content="text/html;charset=GBK" />
<title>反向解析地址</title>	
<style>
html,body{height:100%;margin:0;padding:0;}
#map_canvas{height:87%;}
@media print{
	html,body{height:auto;}
	#map_canvas{height:100%;}
}
</style>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&language=zh-CN"></script>
<script type="text/javascript">
// map.js  start
var $G,$O,$M,$L,$I;
(function(undefined){
O = function (id) {
	return "string" == typeof id ? document.getElementById(id):id;
};
MP = {
	y:39.9,
	x:116.4,
	point:function(y,x){
		return new google.maps.LatLng(y,x);
	},
	getCanvas:function(id){
		var mapid = id?id:'map_canvas';
		return document.getElementById(mapid);
	},
	options:function(center,z){
		return {
			zoom: z?z:14,
			center: center?center:this.getCenter(),
			navigationControl: true,
			scaleControl: true,
			streetViewControl: true,
			mapTypeId: google.maps.MapTypeId.ROADMAP
		}
	},
}

M = {
	mark:function(map,latLng,title){
		if(title)
		return new google.maps.Marker({
			icon: this.icon,
			position: latLng,
			map: map,
			title:title
		});
		else 
		return new google.maps.Marker({
			//icon: this.icon,
			position: latLng,
			map: map
		});
	}
}

I = {
	infos:[],
	add:function(info,latLng,w,h){
		if(w&&h)
		return new google.maps.InfoWindow({
			content: info,
			size: new google.maps.Size(w,h),
			position: latLng
		});
		else if(latLng)
		return new google.maps.InfoWindow({
			content: info,
			position: latLng
		});
		else
		return new google.maps.InfoWindow({
			content: info
		});
	}
}

//event 事件
L = {
	listen:null,
	add:function(dom,event,fn){
		return google.maps.event.addDomListener(dom, event, fn);
	},
	addOnce:function(dom, event, fn){
		return google.maps.event.addListenerOnce(dom, event, fn)
	}
}

$G = MP;
$O = O;
$M = M;
$L = L;
$I = I;
})();
// map.js  end

</script>
<script type="text/javascript">
var map;
var geocoder = new google.maps.Geocoder(); //申明地址解析对象
var z = 8;
function initialize(){
	var point = $G.point($G.y,$G.x);							//初始中心点
	map = new google.maps.Map($G.getCanvas("map_canvas"), $G.options(point,z));		//初始化地图
}

function searchaddress(){
	var address = $O("address").value;
	if (geocoder) {
		geocoder.geocode( { 'address': address,"language":"zh_cn"}, function(results, status) {
			if (status == google.maps.GeocoderStatus.OK) {
				if(results[0]){
					var point = results[0].geometry.location;
					map.setCenter(point);
					var marker = $M.mark(map,point);
					$L.add(marker,"click",function(){
						$I.add("我在这里").open(map,marker);
					})
				}
			} else {
				alert("Geocode was not successful for the following reason: " + status);
			}
		});
	}
}
</script>
</head>
<body onload="initialize()">
    <form id="form1" runat="server" action="#">
    <div>
        <input id="address" type="textbox" value="天津">
        <input type="button" value="反向地址解析" onclick="searchaddress()">
    </div>
    </form>
    <div id="map_canvas"></div>
</body>
</html>



  • 大小: 182 KB
1
0
分享到:
评论

相关推荐

    Google Map Api

    最新版的Google Map API是V3,它是一个基于JavaScript的API,具有高度可定制性和灵活性。 在Google Map API V3中,开发者可以实现以下主要功能: 1. **地图嵌入**:通过简单的HTML和JavaScript代码,可以在网页上...

    googlemap js v3 gmap

    在“chapter10”中,可能会介绍如何利用Google Maps API V3实现地理编码,即将地址转化为经纬度坐标,以及反向地理编码,即从坐标点获取地址信息。这一章还可能涉及如何在地图上添加自定义标记(markers)和信息窗口...

    无密钥google map 第三代

    【标题】"无密钥google map 第三代"指的是在不使用特定API密钥的情况下,采用Google Maps API的第三代版本进行地图应用开发的技术。通常,Google Maps API需要开发者注册并获取API密钥,以便追踪和限制使用量,但...

    获取地图坐标与街道地址

    本文将深入探讨如何使用Google Maps API V3实现从地图坐标到街道地址的转换,也就是所谓的“反向地理编码”(Reverse Geocoding)。这个过程对于提供基于位置的服务至关重要,例如导航、本地搜索和定位跟踪。 ...

    百度地图地址解析

    除了基础的地址解析,百度地图API还提供了反向地址解析(将经纬度转换为地址)、批量地址解析等功能,可以满足不同场景的需求。在实际项目中,你可能需要根据业务需求进行异常处理、缓存策略设计以及性能优化等。 ...

    Google API开发详解

    - 具备强大的地理编码服务,支持地址到坐标转换以及反向地理编码。 ##### 2. Google Earth API简介 Google Earth API允许开发者将Google Earth的三维地球浏览体验集成到网页中。相比于Google Maps API,Google ...

    python百度获取地址坐标

    百度地图API提供了一个服务,可以将人类可读的地址转换为经纬度坐标,这是一种称为反向地理编码的过程。 首先,你需要申请一个百度地图的API密钥(AK),这是调用其服务的必要条件。在Python代码中,这个密钥会被...

    GoogleMapsAPIv3完整版

    5. **地理编码和反向地理编码**:API提供了将地址转换为坐标(地理编码)和坐标转换为地址(反向地理编码)的功能。 6. **路线规划**:可以利用DirectionsService和DirectionsRenderer实现路线规划,支持驾车、步行...

    经纬度获取API

    例如:`http://api.map.baidu.com/geocoding/v3/?address=北京市海淀区&output=json&ak=your_api_key`。其中,`address`参数是你要查询的地址,`output`指定返回数据格式(json或xml),`ak`则是你的API Key。 3. *...

    GMap V3 各种机能汇总

    8. **地理编码(Geocoding)**:GMap V3提供了地址到坐标(反向地理编码)和坐标到地址(地理编码)的功能,便于地图与地址之间的转换。 9. **地图事件**:GMap V3支持各种地图事件,如拖动、缩放、鼠标悬停等,...

    GoogleMapAPIV3

    **Google Maps API V3**是谷歌提供的一款强大的地图集成工具,允许开发者在自己的网页或应用中嵌入交互式地图功能。这个API是基于JavaScript构建的,因此它可以在任何支持JavaScript的浏览器上运行,包括移动设备上...

    arcgis api for javascript v4.18 v3.35

    3. **地理编码和反向地理编码**:集成Geocoding服务,可以将地址转换为坐标,反之亦然,为位置查找提供便利。 4. **几何操作**:提供丰富的几何对象和几何操作,如创建、编辑和分析几何形状,满足空间数据处理需求。...

    通过经纬度获取城市名

    反之,也可以将地址信息转换为经纬度坐标,这一过程称为反向Geocoding。开发者可以通过调用这个API,轻松地在应用中实现位置信息的解析和展示。 **二、API使用流程** 1. **注册与获取API Key** - 首先,你需要在...

    高德地理编码_地理编码_

    当我们有一个GPS坐标,比如(39.9840, 116.3277),通过反向地理编码,我们可以得到这个坐标对应的实际地址,即“北京市海淀区中关村大街1号”。 高德地图的地理编码API通常需要开发者注册并获取API密钥,然后在请求...

    基于yolo_v3的目标检测代码和源文件.zip

    1. 数据集:包含训练和验证图像以及对应的标注文件,标注文件通常为XML或TXT格式,描述了每个目标的边界框坐标和类别。 2. 配置文件:定义了模型结构、学习率、批大小等训练参数,如`yolov3.cfg`。 3. 模型权重:...

    基于python实现地址和经纬度转换

    而反向地理编码则是相反的过程,即将经纬度坐标转换为人类可读的地址信息。这种技术在地图应用、位置服务等领域有着广泛的应用。 #### 二、准备工作 为了实现这一功能,我们需要借助第三方API,如百度地图API等。...

    微信小程序基于高德地图查找位置并显示文字

    url: 'https://restapi.amap.com/v3/geocode/regeo', data: { key: app.globalData.amapKey, location: that.data.gdlongitude + "," + that.data.gdlatitude, extensions: "all", s: "rsx", sdkversion: ...

    YOLOv3: 训练自己的数据

    描述中的“训练数据”可能就是这样的图像集合,而“训练标签”则对应于这些图像的标注信息,如边界框坐标和类别标签。 2. **数据格式**:YOLOv3使用特定的标注格式,通常每个图像对应一个文本文件,列出边界框的...

Global site tag (gtag.js) - Google Analytics