通过起终点地址信息做自驾搜索

此示例是一个简单的通过起终点地址信息做自驾搜索。搜索从海淀区中关村东路1号院到西单北大街甲131的自驾路线。并显示在地图上。

关键代码

  //地址匹配
  var geo=new sogou.maps.Geocoder();
  geo.geocode(start,function(a){
		if(a.status=='ok'){
			//设置起点坐标对象
         		request.origin=a.data[0].location;
			//判断终点坐标对象是否已经获取到,获取到就进行自驾搜索
			if(request.destination){navSearch()}
		}
	});
  geo.geocode(end,function(a){
		if(a.status=='ok'){
			//设置终点坐标对象
         		request.destination=a.data[0].location;
			//判断起点坐标对象是否已经获取到,获取到就进行自驾搜索
			if(request.origin){navSearch()}
		}
	});

  //取得全部地址坐标后自驾搜索
  function navSearch()
  {
	var nav=new sogou.maps.Driving();
	nav.route(request,callback);
  }
  function callback(a){
	//设置渲染的信息
	var option={
		'map':map,
		'drivingResult':a
	   };
	var bdr=new sogou.maps.DrivingRenderer(option);	//在地图区渲染
  };
			

代码解析

首先将地址信息转换为具体的搜狗坐标。

  var start={
	  address:{
		    addr:'海淀区中关村东路1号院',
		    city:'北京'
		}
	}
  var end={
	  address:{
		    addr:'西单北大街甲131',
		    city:'北京'
		}
	}
  //地址匹配
  var geo=new sogou.maps.Geocoder();
  geo.geocode(start,function(a){
		if(a.status=='ok'){
			//设置起点坐标对象
         		request.origin=a.data[0].location;
			//判断终点坐标对象是否已经获取到,获取到就进行自驾搜索
			if(request.destination){navSearch()}
		}
	});
  geo.geocode(end,function(a){
		if(a.status=='ok'){
			//设置终点坐标对象
         		request.destination=a.data[0].location;
			//判断起点坐标对象是否已经获取到,获取到就进行自驾搜索
			if(request.origin){navSearch()}
		}
	});
			

通过获取到的坐标,进行自驾搜索。

  var request={
 	'map':map,        	//Map
 	'tactic':0
  }
  //取得全部地址坐标后自驾搜索
  function navSearch()
  {
	var nav=new sogou.maps.Driving();
	nav.route(request,callback);
  }
  function callback(a){
	//设置渲染的信息
	var option={
		'map':map,
		'drivingResult':a
	   };
	var bdr=new sogou.maps.DrivingRenderer(option);	//在地图区渲染
  };
			

完整代码

<!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>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>搜狗地图 JavaScript API 示例: 用地址做自驾搜索</title>
<style type="text/css">
#map{position:absolute;width:700px; height:500px;}
</style>
<script type="text/javascript" src="http://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:600px;">
	</div>
</body>
<script>

  var myLatLng = new sogou.maps.Point(12957062,4827187);
  var myOptions = {
  	zoom: 10,
  	center: myLatLng
  };
  var map = new sogou.maps.Map(document.getElementById("map"), myOptions);

  var start={
	  address:{
		    addr:'海淀区中关村东路1号院',
		    city:'北京'
		}
	}
  var end={
	  address:{
		    addr:'西单北大街甲131',
		    city:'北京'
		}
	}
  var request={
 	'map':map,        	//Map
 	'tactic':0
  }

  //地址匹配
  var geo=new sogou.maps.Geocoder();
  geo.geocode(start,function(a){
		if(a.status=='ok'){
			//设置起点坐标对象
         		request.origin=a.data[0].location;
			//判断终点坐标对象是否已经获取到,获取到就进行自驾搜索
			if(request.destination){navSearch()}
		}
	});
  geo.geocode(end,function(a){
		if(a.status=='ok'){
			//设置终点坐标对象
         		request.destination=a.data[0].location;
			//判断起点坐标对象是否已经获取到,获取到就进行自驾搜索
			if(request.origin){navSearch()}
		}
	});

  //取得全部地址坐标后自驾搜索
  function navSearch()
  {
	var nav=new sogou.maps.Driving();
	nav.route(request,callback);
  }
  function callback(a){
	//设置渲染的信息
	var option={
		'map':map,
		'drivingResult':a
	   };
	var bdr=new sogou.maps.DrivingRenderer(option);	//在地图区渲染
  };

</script>
</html>
			

运行代码