通过起终点地址信息做自驾搜索
此示例是一个简单的通过起终点地址信息做自驾搜索。搜索从海淀区中关村东路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>