// 添加地图自定义控件的事件
function addEventHandler(target, eventName, handler) {
if (target.addEventListener) {
target.addEventListener(eventName, handler, false);
} else if (target.attachEvent) {
target.attachEvent("on" + eventName, handler);
} else {
target["on" + eventName] = handler;
}
}
//自定义地图上的搜索控件
function searchControl(){
// 设置默认停靠位置和偏移量
this.defaultAnchor = BMAP_ANCHOR_TOP_LEFT;
this.defaultOffset = new BMap.Size(10, 10);

this.searchBox = document.createElement("input");// 搜索框
this.searchBox.setAttribute("type", "text");
this.searchButton = document.createElement("span");// 搜索按钮
}
searchControl.prototype = new BMap.Control();
searchControl.prototype.initialize = function(map){
// 创建一个DOM元素
var div = document.createElement("div");
// 设置样式
div.className = "hosmapsearch";
var self = this;
var searchInput = this.searchBox;
searchInput.className = "basictypefour";
searchInput.placeholder = "搜索...";
var searchBtn = this.searchButton;
searchBtn.className = "hopsearcon";

addEventHandler(searchBtn, "click", function() {
var address = searchInput.value;
// 创建地址解析器实例
var myGeo = new BMap.Geocoder();
// 将地址解析结果显示在地图上,并调整地图视野
myGeo.getPoint(address, function(point){
if (point) {
$scope.$apply(function(){
$scope.coordinate = JSON.stringify(point);
});
console.log($scope.coordinate);
map.centerAndZoom(point, 16);
map.addOverlay(new BMap.Marker(point));
}
}, address);
});
//添加输入框和搜索按钮到div中
div.appendChild(searchInput);
div.appendChild(searchBtn);
// 添加DOM元素到地图中
map.getContainer().appendChild(div);

// 将DOM元素返回
return div;
}

//初始化map
var map;
var initialize = {
initMap:function(){
map = new BMap.Map("hospitalAddMap"); // 创建Map实例
var point = new BMap.Point(39.919422,116.417773);//默认初始化地图中心点(BJ)
map.centerAndZoom(point,16);// 初始化地图,设置中心点坐标和地图级别
map.enableScrollWheelZoom(true);//开启鼠标滚轮缩放
map.enableDragging();//拖拽

// 创建控件实例
var mySearchCtrl = new searchControl();
// 添加到地图当中
map.addControl(mySearchCtrl);

this.setCityCenter();
},
setCityCenter:function(){
function myFun(result){//ip定位初始化城市
var cityName = result.name;
console.log(cityName);
map.centerAndZoom(cityName, 16);
}
var myCity = new BMap.LocalCity();
myCity.get(myFun);
}
}

//init map
initialize.initMap();

angularjs1 实现地图添加自定义控件(搜索功能)及事件的更多相关文章

  1. 为Jekyll+GitHub Pages添加全文搜索功能

    动态演示如下: [上传失败, 请自行搜索原文] 源码库: program-in-chinese/team_website 找到此JS工具: christian-fei/Simple-Jekyll-Se ...

  2. 给 hugo 博客添加搜索功能

    起因 我的博客使用了 hugo 作为静态生成工具,自带的主题里也没有附带搜索功能.看来,还是得自己给博客添加一个搜索功能. 经过多方查找,从 Hugo Fast Search · GitHub 找到一 ...

  3. 百度地图API示例之添加自定义控件

    代码 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" cont ...

  4. 百度地图api添加自定义控件

    官网栗子:http://lbsyun.baidu.com/jsdemo.htm#b0_6 <!DOCTYPE html><html><head> <meta ...

  5. 百度地图API 批量添加 带检索功能的信息窗口

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. lucene3.6笔记添加搜索功能

    lucene为程序添加搜索功能,此功能基于已创建好的文档的索引之上.这里我已经为一些文档建立了索引,并保存到硬盘上.下面开始针对这些索引,添加搜索功能. 1.简单的TermQuery搜索 Java代码 ...

  7. 百度地图API的自动定位和搜索功能(移动端)

    近期有个项目涉及到百度地图API,要求做到自动定位和搜索功能.煞费苦心的研究半天,终于能将两个功能合二为一,现将代码贴出来分享给大家,希望你们的砖搬得又快又好.注释不多,具体请参照:http://lb ...

  8. 011.Adding Search to an ASP.NET Core MVC app --【给程序添加搜索功能】

    Adding Search to an ASP.NET Core MVC app 给程序添加搜索功能 2017-3-7 7 分钟阅读时长 作者 本文内容 1.Adding Search by genr ...

  9. dgango中admin下添加搜索功能

    admin下添加搜索功能: 在表单中加入search_fields = ['ip','hostname']   可模糊匹配 当有人在管理搜索框中进行搜索时,Django将搜索查询分解成单词,并返回包含 ...

随机推荐

  1. (转)Should 断言的基本使用方法

    一.基础 RobotFramework带有丰富的系统关键,使用时无需导入,直接使用,为写自动化用例带来了极大的方便:不能停留在知道或者是会得程度,只有熟练使用各关键字,才能提升自动化用例的写作效率.下 ...

  2. 树莓派(Raspberry Pi)日期时间不准的修正方法

    在树莓派上,打date命令可以看到系统的日期时间: 后面的CST表示中国标准时间 小知识: 树莓派没有电池,断电后无法保存时间. 树莓派默认安装了NTP(Network Time Protocol)服 ...

  3. 自己编写的一个有关安卓应用开发培训PPT

    这个是我自己编写的一个有关安卓应用开发培训PPT,适合新手. 在这里下载PPT

  4. Saying that Java is nice because it works on every OS is like saying that anal sex is nice because it works on every gender.

    Saying that Java is nice because it works on every OS is like saying that anal sex is nice because i ...

  5. Verilog HDL那些事_建模篇笔记(实验三:按键消抖)

    实验三:按键消抖 首先将按键消抖功能分成了两个模块,电平检查模块和10ms延迟模块.电平检测模块用来检测按键信号的变化(是否被按下),10ms延迟模块用来稳定电平检查模块的输入,进而稳定按键信号,防止 ...

  6. es6 ... 表达

    ... 包含0个或n个属性, { ...state.counters [id]: state.counters[id] - 1 } 只改变其中的id相对应的属性,其他保持不变

  7. MySql 存储过程及调用方法

    存储过程实例: DELIMITER $$drop procedure if exists ff $$CREATE /*[DEFINER = { user | CURRENT_USER }]*/ PRO ...

  8. SOA 面向服务的体系结构

    SOA:面向服务的体系结构(service-oriented architecture) 是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来. 接口是采 ...

  9. 实践总结 - 不可错过的Angular应用技巧

    angular的核心思想是通过数据驱动一切,其他东西都是数据的延伸. 套用Javascript一切皆对象的思想,在angular中可以说一切皆数据. 关于项目构建 (1) requirejs以及Yeo ...

  10. 在Ubuntu14.04系统POWER8服务器上搭建Docker Registry服务

    本文描述了如何在POWER8服务器上搭建一个本地化的Docker镜像仓库,主要涉及镜像制作,Docker Registry服务启动等.希望能够对在非X86服务器上搭建Docker仓库的同学提供参考. ...