效果:
!['实现效果'](https://box.kancloud.cn/2016-03-10_56e12e23e3638.png)
代码如下图所示:
```javascript
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=BDAK"></script>
<script>
{
var thetype = '0';
// 百度地图API功能
var origin = '';
var destination = '广西省北海涠洲岛滴水丹屏125号';
var map = new BMap.Map("l-map");
map.centerAndZoom(new BMap.Point(116.404, 39.915), 12);
if(thetype==1){
var transit = new BMap.TransitRoute(map, {
renderOptions: { map: map, panel: "r-result"}
});
transit.search(origin, destination);
}
else if (thetype==2)
{
var driving = new BMap.DrivingRoute(map, { renderOptions: { map: map, panel: "r-result", autoViewport: true}});
driving.search(origin, destination);
}
else if (thetype==3)
{
// 百度地图API功能
//var map = new BMap.Map("l-map");
//map.centerAndZoom(new BMap.Point(116.404, 39.915), 11);
var walking = new BMap.WalkingRoute(map, { renderOptions: { map: map, panel: "r-result", autoViewport: true}});
walking.search(origin, destination);
}
//searchAssociativeWord(J.g("start"))
/**
* 搜索联想词
* @param int
* @returns {boolean}
*/
function searchAssociativeWord(int){
if (!int) {
return false;
}
var input = int, drop_box = $(".drop_box"), data_list = J.g("data_list");
var SELECTED = false; //判断搜索框内的词是否是选中的联想词;
associativeWordSelect();
closeBtnEvent();
searchButtonClick();
input.on("input", function(){
var value = input.val();
if (value.replace(/(^\s*)|(\s*$)/g, "")=="") {
clearDataList();
}
if (SELECTED) SELECTED = false;
});
//调用baidu Autocomplete API接口
var ac = new BMap.Autocomplete({
"input" : "start",
"location" : map,
//联想成功回掉函数
onSearchComplete: function(results){
//如果该词是选中联想词而填入搜索框的,不做联想操作
if (SELECTED) {
return;
}
// 判断状态是否正确
drop_box.show();
//baidu api接口如果设备是移动设备,只会返回6条数据
var data_len = results.si.length;
var s = [], max_len, limit_len = 6;
max_len = data_len<limit_len?data_len:limit_len;
if (max_len) {
data_list&&data_list.html("");
for (var i = 0; i < max_len; i++){
if (results.getPoi(i)) {
s.push(results.getPoi(i).business);
createSearchDataList(results.getPoi(i).business);
}
}
SEARCHLIST = s;
} else {
clearDataList();
}
}
});
function createSearchDataList(title){
var key = input.val();
var n_title = title.replace(key, "<em>"+key+"</em>");
var list = J.create("li", {
"data-html": title
}).html(n_title);
data_list.append(list);
}
function clearDataList(){
data_list&&data_list.html("");
drop_box&&drop_box.hide();
}
//搜索按钮点击事件
function searchButtonClick(){
//绑定回车按键
J.g(document).on("keydown", function(e){
var key = e.which;
if (key==13) {
clearDataList();
//getPlacePoint(input.val());
e.preventDefault();
}
});
function getPlacePoint(value){
var myGeo = new BMap.Geocoder();
var myValue = value;
myGeo.getLocation(DESTPOINT, function(result){
PROVINCE = result.addressComponents.province;
myGeo.getPoint(myValue, function(point){
if (point) {
var start = {
lng: point.lng,
lat: point.lat
}
if (DIRECTION) {
//反向
getBusRoute(DESTPOINT, start, myValue);
} else {
//正向
getBusRoute(start, DESTPOINT, myValue);
}
} else {
importAssocWord();
headTitleShow("s_title");
navigationPanel.contSwitch(0);
setTimeout(function(){
navigationPanel.show();
}, PANEL_TIME);
T.trackEvent("track_" + J.site.info.pageName.toLowerCase() + "_nopoint_baiduapi_0");
}
}, PROVINCE);
});
}
/**
* 导入联想词到选择面板
*/
function importAssocWord(){
var dest_panel = J.g("dest_panel"), list = SEARCHLIST, len = list.length;
dest_panel.s(".start_icon").eq(0).html(input.val());
dest_panel.s("li").each(function(i,v){
v.remove();
});
if (len > 0) {
for (var i=0; i<len; i++) {
if (list[i]==input.val()) {
continue;
}
var li = J.create("li", {}).html(list[i]);
dest_panel.append(li);
}
dest_panel.s("li").each(function(i,v){
v.on("click", function(e){
e.stop();
//解析地址获取经纬度
//getPlacePoint(v.html());
input.val(v.html());
//因为替换input value会触发input事件
clearDataList();
})
});
}
}
}
/**
* 关闭联想词按钮点击
*/
function closeBtnEvent(){
J.g("drop_close")&&J.g("drop_close").on("click", function(e){
e.stop();
clearDataList();
});
}
/**
* 联想词点击事件
*/
function associativeWordSelect(){
J.g("data_list")&&J.g("data_list").on("click", function(e){
e = window.event || e;
var target = J.g(e.target || e.srcElement);
clearDataList();
//因为html中的内容被加过<i>标签,所以使用data-html中的内容
J.g("start").val(target.attr("data-html"));
SELECTED = true;
});
}
}
</script>
```
- 说明
- PHP
- 数组操作
- file操作的常用方法
- PHP字符串输出之Heredoc说明
- require(_once)和include(_once)的理解
- file_get_contents和curl
- PHP的json问题
- PHP提高效率的几点
- PHP/异步任务队列处理
- HTTP_AUTHORIZATION
- php中 intval和string的一些转换问题
- 变量在 PHP7 内部的实现
- 关于exit和die
- php获取微秒
- php高性能日志扩展seaslog的使用
- Curl使用说明
- echo的数据自动增加换行或其他
- php-memcache
- 根据18位数校验前17位身份证号是否正确
- 将一个老项目升级到php7
- ord获取ASCII码
- 框架
- thinkphp5
- THINKPHP5常见问题
- Laravel5学习笔记
- homestead总结
- easywechat学习笔记
- wechat公众号
- 获取用户信息的实现方式
- 前端
- HTML
- CSS
- 伪类和伪元素的区别
- Bootstrap使用
- Javascript
- Javascript梳理总结
- 巧用history.pushState无刷新改变页面url
- jquery日期时间选择器组件datepicker的使用说明
- 基本操作
- 比较
- 后端/Nodejs
- 多nodejs版本管理
- 小功能
- URLAPI
- 二维码转换
- 地图URL直接实现导航
- 字体生成
- 网址长短互转
- 百度短网址
- Fiddle模拟测试百度短网址api
- Composer备忘录
- composer安装配置
- Composer 错误集锦
- Composer使用自己的库
- GIT简单操作命令
- Git记住密码
- git 显示错误详情和请求信息
- 工具软件
- PHPStorm
- VI简单操作命令
- ATOM
- browser提示shockwave false加载失败
- Cmder使用说明
- Windows软件总结
- 浏览器插件
- 支付
- 微信支付
- 支付宝
- 银联支付
- Ping++
- Beecloud支付
- Map
- 百度地图BaiduMap
- RESTfulAPI设计实践
- HTTP
- GET/POST 的请求大小
- 常见状态码说明
- Ubuntu
- 命令行中的>>和>的区别
- 笔记
- 正则
- Hybrid的使用记录
- H5+和mui
- HTML5+和mui使用
- APP开发过程中蓝牙问题总结
- Cordova的使用
- 服务器
- URL重写
- 目录限制访问
- 软链接和硬链接
- 票务系统对接资料和总结
- qunar去哪儿门票对接
- qunar对接case介绍及错误代码
- tuniu门票对接总结
- 途牛小结
- 联合票务对接途牛文档说明
- 途牛签名流程
- meituan美团
- 大众点评
- 联合票务
- 安卓使用技巧
- 安卓清理电池信息
- 安卓6.0使用时发现的问题
- 数据库
- 数据库mysql
- 分页数据优化
- 手机号用不到索引的问题分析
- mysql配置的localhost和127.0.0.1的区别
- mysql5.5升级mysql5.7
- 数据库MongoDB
- Redis使用说明
- phpredis使用说明
- 环境变量
- Twig使用
- 经典的文章
- 用超人的故事讲解 IoC(控制反转) 和 DI(依赖注入)