转载请注明地址:http://www.cnblogs.com/enzozo/p/4368081.html

简介:

此入门地图为简易的“广州大学城”公交寻路地图,采用很少量的AngularJS进行input的交互,绝大部分基于百度地图API。

正文:

index.html:

 <!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<!-- 使在移动设备上有较好显示 --> <link rel="stylesheet" type="text/css" href="index.css"> <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=91bc04aac3d665927d8c64750da556a9"></script>
<!-- ak="xxx",xxx为百度地图秘钥,使用1.5及以上版本需申请 --> <title>广州大学城寻路</title> <script type="text/javascript" src="angular.min.js"></script> <script type="text/javascript" src="http://api.map.baidu.com/library/AreaRestriction/1.2/src/AreaRestriction_min.js"></script>
<!-- 用于设置地图显示范围 --> <script type="text/javascript" src="myControl.js"></script>
</head>
<body>
<div id="left">
<div id="search" ng-app="" ng-controller="myCtrl">
起点:<input type="text" ng-model="init" required><br>
终点:<input type="text" ng-model="ended" required><br>
<button ng-click="go()" style="position:absolute; top:20px; left:250px; z-Index:99; padding:5px">查询</button>
</div>
<br>
<div id="r-result"></div>
</div>
<div id="l-map"></div>
</body>
</html>

index.css:

 body, html {
width: 100%;
height: 100%;
margin:;
font-family:"Microsoft Yahei";
} #l-map {
height:100%;
width:75%;
} #left {
height: 100%;
width: 24.5%;
float:left;
overflow: hidden;
border-right-style: groove;
} #search {
padding: 10px;
}

注:设置路线显示栏及input位于左侧,地图位于右侧。

myControl.js:

 var map;
window.onload = function() {
// 百度地图API
map = new BMap.Map("l-map", {minZoom:15}); //初始化地图,规定最小缩放
map.centerAndZoom(new BMap.Point(113.402364,23.056676), 16); //显示中心
map.enableScrollWheelZoom(); //启用滚轮缩放 var top_right_navigation = new BMap.NavigationControl({anchor: BMAP_ANCHOR_TOP_RIGHT, type: BMAP_NAVIGATION_CONTROL_SMALL});//右上角平移和缩放按钮
map.addControl(top_right_navigation);
/* 由于设置了地图边界,即拖拽地图至超出“大学城”范围时地图会自动弹回,所以使用平移按钮时它可能会出现自己和自己较劲儿的现象 */ var b = new BMap.Bounds(new BMap.Point(113.363465,23.033239),new BMap.Point(113.42225,23.081655));
try {
BMapLib.AreaRestriction.setBounds(map, b); //设置边界
} catch (e) {
alert(e);
}
}; function myCtrl($scope){
$scope.go = function() {
document.getElementById('r-result').innerHTML = '';
map.clearOverlays(); //清空地图所有标注 var local = new BMap.LocalSearch(map, {
renderOptions:{
map: map,
panel: "results"
}
}); var b = new BMap.Bounds(new BMap.Point(113.363465,23.033239),new BMap.Point(113.42225,23.081655));
BMapLib.AreaRestriction.setBounds(map, b); var s_marker = null; //起点marker
var e_marker = null; //终点marker local.searchInBounds($scope.init, map.getBounds()); //在“大学城”范围内进行搜索
local.setMarkersSetCallback(function (pois) { //插入marker的回调函数
for(var i = 0; i < pois.length; i++){
var marker = pois[i].marker;
marker.addEventListener("click", function(){ //添加监听事件
marker_trick = true;
var pos = this.getPosition();
setAdress_s(pos.lng, pos.lat);
});
}
}) function setAdress_s(s_lng, s_lat) {
if (confirm("设为起点?")) {
map.clearOverlays();
s_marker = new BMap.Marker(new BMap.Point(s_lng, s_lat));
map.addOverlay(s_marker); //创建标注 local.searchInBounds($scope.ended, map.getBounds());
local.setMarkersSetCallback(function (pois) {
//此函数写在setAdress_s里面保证先设置了起点后再设置终点
for(var i = 0; i < pois.length; i++){
var e_marker = pois[i].marker;
e_marker.addEventListener("click", function(){
marker_trick = true;
var pos = this.getPosition();
setAdress_e(pos.lng, pos.lat);
});
}
}) function setAdress_e(e_lng, e_lat) {
if (confirm("设为终点?")) {
map.clearOverlays();
e_marker = new BMap.Marker(new BMap.Point(e_lng, e_lat));
map.addOverlay(e_marker); var transit = new BMap.TransitRoute(map, {
renderOptions: {
map: map,
panel: "r-result" //将结果显示在$('#r-result')中
}
});
transit.search(s_marker.getPosition(), e_marker.getPosition()); //公交线路查询
}
}
}
} }
}

此地图并不是很完善,比如起点终点marker样式相同,未进行区分。之后会继续完善%>_<%

最后照例上一张测试图:

转载请注明出处:http://www.cnblogs.com/enzozo/p/4368081.html

基于百度地图api + AngularJS 的入门地图的更多相关文章

  1. Google 地图 API V3 使用入门

    Google官方教程: Google 地图 API V3 使用入门 Google 地图 API V3 针对移动设备进行开发 Google 地图 API V3 之事件 Google 地图 API V3 ...

  2. 【百度地图API】如何自定义地图图层?实例:制作麻点图(自定义图层+热区)

    原文:[百度地图API]如何自定义地图图层?实例:制作麻点图(自定义图层+热区) 摘要:自定义地图图层的用途十分广泛.常见的应用,比如制作魔兽地图和清华校园地图(使用切图工具即可轻松实现).今天我们来 ...

  3. 【百度地图API】如何利用地图API制作汽车沿道路行驶的动画?——如何获得道路层数据

    原文:[百度地图API]如何利用地图API制作汽车沿道路行驶的动画?--如何获得道路层数据 有几个做汽车导航的朋友问我说,他们想在地图上制作一辆车沿着道路行驶的动画.可是,百度地图的道路数据并没有公开 ...

  4. 【百度地图API】如何在地图上添加标注?——另有:坐标拾取工具+打车费用接口介绍

    原文:[百度地图API]如何在地图上添加标注?--另有:坐标拾取工具+打车费用接口介绍 摘要: 在这篇文章中,你将学会,如何利用百度地图API进行标注.如何使用API新增的打车费用接口. ------ ...

  5. 【百度地图API】多家地图API文件大小对比

    原文:[百度地图API]多家地图API文件大小对比 于2011.6.9日更新百度地图API文件大小.同时更新图片. 任务描述: 明天就是元宵佳节啦~这是一个团团圆圆的节日,于是,再次想把各家API聚在 ...

  6. 【百度地图API】多家地图API内存消耗对比测验(带源码)

    原文:[百度地图API]多家地图API内存消耗对比测验(带源码) 任务描述: 啊,美妙的春节结束了.酸奶小妹和妈妈的山西平遥之旅也宣告成功!距离平遥古城7km,有一个同样身为“世界文化遗产”的寺庙,叫 ...

  7. 百度地图api通过地址显示地图,白名单

    百度地图api通过地址显示地图,白名单 http://developer.baidu.com/map/jsdemo.htm#i7_1?qq-pf-to=pcqq.c2c---------------- ...

  8. [转]百度地图API详解之地图坐标系统

    博客原文地址:http://www.jiazhengblog.com/blog/2011/07/02/289/ 我们都知道地球是圆的,电脑显示器是平的,要想让位于球面的形状显示在平面的显示器上就必然需 ...

  9. PHP:基于百度大脑api实现OCR文字识别

    有个项目要用到文字识别,网上找了很多资料,效果不是很好,偶然的机会,接触到百度大脑.百度大脑提供了很多解决方案,其中一个就是文字识别,百度提供了三种文字识别,分别是银行卡识别.身份证识别和通用文字识别 ...

随机推荐

  1. C语言数据结构----栈与递归

    本节主要说程序中的栈函数栈的关系以及栈和递归算法的关系. 一.函数调用时的栈 1.程序调用时的栈是也就是平时所说的函数栈是数据结构的一种应用,函数调用栈一般是从搞地质向低地址增长的,栈顶为内存的低地址 ...

  2. 多名Uber司机被指刷单遭封号 一周薪水为0

    昨天,一司机在Uber“司机之家”办公地墙上写了泄愤的话 摄/法制晚报记者 苏妮 司机展示的账单显示,上周的薪水几乎为零,上面用英文标注了“欺诈行为”的字样 摄/法制晚报记者 苏妮 法制晚报讯(记者 ...

  3. Android eng版系统烧录

    这里我只能记录下过程 Android有四层,最底层的Linux是一个kernel,然后是运行时库层,驱动大部分在这两层完成,接着是Framework层,主要是Android源码,最后是在源码基础上进行 ...

  4. HEVC与VP9编码效率对比

    HEVC(High EfficiencyVideo Coding,高效率视频编码)是一种视频压缩标准,H.264/MPEG-4 AVC的继任者.目前正在由ISO/IEC MPEG和ITU-T VCEG ...

  5. iOS开发宝典:String用法大全

    一.NSString 创建字符串.  NSString *astring = @"This is a String!"; 创建空字符串,给予赋值.  NSString *astri ...

  6. C# 关于数据类型转换

    1.强制转换; 需要注意的一个是char不能强制转化成int,如果使用强制转化,得到的是原整数的ASCII码值.该方式对于浮点数会做无条件舍去,失去精确度. 2.利用方法: 类型.Parse(stri ...

  7. Unslider – 轻量的响应式 jQuery 内容轮播插件

    Unslider 是一款非常轻量的 jQuery 插件(压缩后不到3KB),能够用于任何 HTML 内容的滑动. 可以响应容器的大小变化,自动排布不用大小的滑块.可以通过整合 jQuery.event ...

  8. KeCode对照表(键盘按键的获取)

    KeyCode键盘对照表: http://www.cnblogs.com/furenjian/articles/2957770.html

  9. 浅谈JDBC(二)

    JDBC中的事务 简单来说,事务就是要保证一组DAO方法的操作,要么一起成功要么一起失败. 1.事务控制的位置 在Service中的业务方法内进行事务控制. 2.事务控制的代码 a.注意:JDBC会自 ...

  10. JavaSE_ 集合框架 总目录(15~18)

    JavaSE学习总结第15天_集合框架1 15.01 对象数组的概述和使用15.02 对象数组的内存图解15.03 集合的由来及与数组的区别15.04 集合的继承体系图解15.05 Collectio ...