任务描述:
酸奶小妹放寒假啦,要从北京呼啦一下飞回重庆呢。现在百度地图API上不能直接切换城市,怎么办呢?
如何实现:
利用API先搜索到要去城市,然后再让搜索到的城市显示在地图中心点。
(百度地图上的实现方式是,给后端一个请求,后端返回该城市的经纬度)
图示:
运行代码:请点击这里
代码:
<!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"/><meta name="keywords" content="百度地图,百度地图API,百度地图自定义工具,百度地图所见即所得工具"/><meta name="description" content="百度地图API自定义地图,帮助用户在可视化操作下生成百度地图"/><title>从北京到重庆</title><script type="text/javascript" src="http://api.map.baidu.com/api?&v=1.2"></script></head><body> <p>我要去<input id="txtSearch" type="text" value="重庆"/><input type="button" value="GO" onclick="search()"/></p><div style="width:520px;height:340px;border:1px solid gray;" id="container"></div></body><script type="text/javascript">function $(id){ return document.getElementById(id); //定义$}var map =new BMap.Map("container"); //创建地图map.centerAndZoom(new BMap.Point(116.330599, 39.95536), 10); //初始化地图var city =new BMap.LocalSearch(map,{renderOptions:{map:map,autoViewport:true}}); //地图显示到查询结果处function search(){ var s = $("txtSearch").value; city.search(s); //查找城市}</script></html>
2012-02-07 更新一下API1.2的代码:
原理:localsearch关键词,比如“西单”。
在回调函数里,获取第一个POI的经纬度,并且该点为中心点。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>西单</title>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.2"></script>
</head>
<body>
<div style="width:520px;height:340px;border:1px solid gray" id="container"></div>
</body>
</html>
<script type="text/javascript">
var map = new BMap.Map("container");
map.centerAndZoom(new BMap.Point(116.404, 39.915), 11);
function myFun(){
var pp = local.getResults().getPoi(0).point;
map.centerAndZoom(pp, 18);
}
var local = new BMap.LocalSearch(map, {
onSearchComplete: myFun
});
local.search("西单");
</script>