反地址解析

反地址解析是将已知的坐标解析成具体的地址。此例是解析两个坐标点位置,并将第一个结果标记到地图上。

关键代码

function callback(a){
     if(a.status=='ok'){
         var geometry=a.data[0];
         new sogou.maps.Marker({
             map:map,
             title:geometry.address,
             position:geometry.location
         });
     }

};
var request={
	location:{
		  points:[new sogou.maps.Point(12949482.781246997,4837105.69140625),new sogou.maps.Point(12948892.218746996,4835609.52734375)],
		  type:0
	}
}
var geo=new sogou.maps.Geocoder();
geo.geocode(request,callback);
			

代码解析

首先要先初始化一个Geocoder实例,设置请求参数。调用geocode方法。

var request={
	location:{//使用location参数
		  points:[new sogou.maps.Point(12949482.781246997,4837105.69140625),new sogou.maps.Point(12948892.218746996,4835609.52734375)],
		  type:0 //搜狗坐标
	}
}
var geo=new sogou.maps.Geocoder();
geo.geocode(request,callback);
			

接下来将坐标解析出来的的结果返回给回调函数,以标记的方式显示到地图上。

function callback(a){//回调函数 标点
     if(a.status=='ok'){//有结果返回
         var geometry=a.data[0];//取出第一个结果
         new sogou.maps.Marker({//以第一个数据结果为准,创建一个标记
             map:map,
             title:geometry.address,
             position:geometry.location
         });
     }

};
			

完整代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>反地址解析</title>
<style type="text/css">
 #map{position:absolute;width:400px; height:300px;}
</style>
<script type="text/javascript" src="//api.go2map.com/maps/js/api_v2.5.1.js"></script>
</head>

<body>
    <div id="map" style="float:left"></div>
	<div id="result" style="margin-left:400px;font-size:12px;width:550px;">

	</div>
</body>
<script>
/**
*反地址解析
*/
var myLatLng = new sogou.maps.Point(12949482.781246997,4837105.69140625);
var myOptions = {
  zoom: 17,
  center: myLatLng
};
var map = new sogou.maps.Map(document.getElementById("map"), myOptions);

function callback(a){
     if(a.status=='ok'){
         var geometry=a.data[0];
         new sogou.maps.Marker({
             map:map,
             title:geometry.address,
             position:geometry.location,
			 label:{visible:true}
         });
     }

};
var request={
	location:{
		  points:[new sogou.maps.Point(12949482.781246997,4837105.69140625),new sogou.maps.Point(12948892.218746996,4835609.52734375)],
		  type:0
	}
}
var geo=new sogou.maps.Geocoder();
geo.geocode(request,callback);
</script>
</html>
			

运行代码