Extjs4 百度地图

前段时间,开发需要百度地图,底层用Extjs 4.0.7 版本,想进行融合封装下,上网查了很多资料,基本没有Extjs4 封装百度地图的例子,都是直接用的api嵌入页面,这样并不能满足需求。

然后我看了下extjs ux 扩展控件里,有个谷歌地图控件,我便仿照谷歌控件封装了一个百度地图控件,以后只需要对这个百度控件进行扩展就可以了,下面分享下源码,纯手打,纯原创,author:DEMON

首先:在html页面里面要引用百度地图api,我使用的是2.0大众版本.

<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=自己申请"></script>

以下是地图控件封装(只封装了控件和标记):

 1 /**
 2  * @class Ext.ux.BMapPanel
 3  * @extends Ext.Panel
 4  * @author DEMON
 5  */
 6 Ext.define(‘Ext.ux.BMapPanel‘, {
 7     extend: ‘Ext.Panel‘,
 8
 9     alias: ‘widget.bmappanel‘,
10
11     requires: [‘Ext.window.MessageBox‘],
12
13     initComponent: function () {
14         Ext.applyIf(this.bmap, this.config);
15         this.callParent();
16     },
17
18     afterRender: function () {
19         //设置panel属性
20         var wh = this.ownerCt.getSize();
21         Ext.applyIf(this, wh);
22         this.callParent();
23
24         //设置百度地图属性
25         if (this.bmapType === ‘map‘) {
26             this.bmap = new BMap.Map(this.body.dom);
27         }
28
29         if (this.bmapType === ‘map‘) {
30             this.bmap.centerAndZoom(this.centerCity, this.zoomLevel); //设置初始化中心点
31         }
32
33         this.onMapReady(); //地图加载项
34     },
35     onMapReady: function () {
36         this.addMapConfigs(); //添加地图属性
37         this.addMapControls(); //添加地图控件
38         this.addMapMarkers(this.markers); //添加标记
39     },
40     getMap: function () {
41         return this.bmap;
42     },
43     addMapMarkers: function (markerArray) {
44         if (Ext.isArray(markerArray)) {
45             for (var i = 0; i < markerArray.length; i++) {
46                 this.addMapMarker(markerArray[i]);
47             }
48         }
49     },
50     addMapMarker: function (markerParam) {
51         var point = new BMap.Point(markerParam.x, markerParam.y); //创建图点
52         var markerBase = new BMap.Marker(point); //创建标记
53
54         if (markerParam.isDragging == true)
55             markerBase.enableDragging();
56         else
57             markerBase.disableDragging();
58
59         this.getMap().addOverlay(markerBase); //标记覆盖入地图
60     },
61     addMapControls: function () {
62         debugger
63         if (Ext.isArray(this.mapControls)) {
64             for (var i = 0; i < this.mapControls.length; i++) {
65                 this.addMapControl(this.mapControls[i]);
66             }
67         }
68     },
69     addMapControl: function (controlParam) {
70         debugger
71         var controlBase = new BMap[controlParam.controlName](controlParam);
72         this.getMap().addControl(controlBase);
73     },
74     addMapConfigs: function () {
75         if (Ext.isArray(this.mapConfigs)) {
76             for (var i = 0; i < this.mapConfigs.length; i++) {
77                 this.addMapConfig(this.mapConfigs[i]);
78             }
79         } else if (typeof this.mapConfigs === ‘string‘) {
80             this.addMapConfig(this.mapConfigs);
81         }
82
83     },
84     addMapConfig: function (configParam) {
85         this.getMap()[configParam]();
86     }
87 });

以下是Ext,调用封装地图:

 1 //百度地图类封装
 2 Ext.define(‘Demon.extend.BMapPanel‘, {
 3     constructor: function (configParam) {
 4         var configBase = {
 5             bmapType: ‘map‘,
 6             border: false,
 7             zoomLevel: 15,
 8             centerCity: ‘南京‘,
 9             mapConfigs: [‘enableScrollWheelZoom‘],
10             mapControls: [{
11                 controlName: ‘ScaleControl‘,
12                 anchor: ‘BMAP_ANCHOR_TOP_LEFT‘
13             }, {
14                 controlName: ‘NavigationControl‘,
15                 anchor: ‘BMAP_ANCHOR_TOP_RIGHT‘,
16                 type: ‘BMAP_NAVIGATION_CONTROL_SMALL‘
17             }],
18             markers: [{
19                 x: 118.773834,
20                 y: 32.048698,
21                 isDragging: true
22             }, {
23                 x: 118.79101,
24                 y: 32.057083,
25                 isDragging: false
26             }]
27         };
28
29         Ext.applyIf(configBase, configParam);
30
31         return Ext.create(‘Ext.ux.BMapPanel‘, configBase);
32     }
33 });

代码很简单,花2分钟看下就能明白,希望能给需要的童鞋一点帮助

无图无真相?好吧,最后补上效果图:

时间: 2024-12-26 22:55:51

Extjs4 百度地图的相关文章

百度地图API实现批量地址解析

1.前言 写这篇文章的原因是最近做一个GIS项目在网上爬取了一些数据,无奈只有地址的文字信息没有坐标信息,如何把信息显现在地图上呢?很纠结啊,查看了一下百度地图API惊奇的发现百度提供了地址解析的API,然后查看了他的Demo后豁然开朗,所以动手将自己的文字信息数据进行解析坐标信息.下面开始讲解. 2.方案 (1)自己数据库中的数据 (2)百度地图API Demo <!DOCTYPE html> <html> <head> <meta http-equiv=&qu

js中实现高德地图坐标经纬度转百度地图坐标

1 function tobdMap(x, y) { 2 var x_pi = 3.14159265358979324 * 3000.0 / 180.0; 3 var z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi); 4 var theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi); 5 var bd_lon = z * Math.cos(theta) + 0.00

Vue2.0与 [百度地图] 结合使用———vue+webpack+axios+百度地图实现组件之间的通信

Vue2.0与 [百度地图] 结合使用: 1.vue init webpack-simple vue-baidu-map 2.下载axios cnpm install axios; 3.在main.js中引入axios,并使用 import axios from 'axios' /* 把axios对象挂到Vue实例上面,其他组件在使用axios的时候直接 this.$http就可以了 */ Vue.prototype.$http = axios; 4.引入百度地图的js秘钥--->最好在inde

百度地图标注图标太小

1.1.1  现象 百度地图中,定位点的标注示意图标太小: 实际期望的图标是这样的: 1.1.2  原因 检查了很久,以为是打开地图时的设置问题,后来慢慢查找地图上的元素定位,终于发现原来这个图标大小是被CSS控制的,在地图元素的内部可以找到如下代码: 这个img元素就是用来显示定位图标的,可以修改这个元素的CSS属性来改变大小. 1.1.3  解决 如果要使用默认大小,则需要配置如下CSS: img {     max-width: inherit; } 原来图标变小,是因为其它CSS配置导致

Android 百度地图开发(一)--- 申请API Key和在项目中显示百度地图

标签: Android百度地图API Key  分类: Android 百度地图开发(2)  最近自己想研究下地图,本来想研究google Map,但是申请API key比较坑爹,于是从百度地图入手,其实他们的用法都差不多,本篇文章就带领大家在自己的Android项目中加入百度地图的功能,接下来我会写一系列关于百度地图的文章,欢迎大家到时候关注!   一 申请API key 在使用百度地图之前,我们必须去申请一个百度地图的API key,申请地址http://lbsyun.baidu.com/a

HTML5结合百度地图API创建地图应用

具体的百度地图API的使用方法查看百度地图API里的DEMO <style> #div1{ width:400px; height:400px; border:1px #000 solid;} </style> <script src="http://api.map.baidu.com/api?v=1.3"></script> <script> window.onload = function(){ var oInput =

百度地图SDK开发过程中遇到的问题解析

问题1. 在运行显示百度地图是出现如下错误,导致程序停止: 01-30 06:49:49.935: E/AndroidRuntime(9132): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load BaiduMapSDK_v3_2_0_15 from loader dalvik.system.PathClassLoader[dexPath=/data/app/com.example.getsmsinfo-1.apk,libraryP

Android如何申请百度地图key

在开发过程中,有时候会使用到地图定位之类的功能,在使用百度地图之前,我们先要申请一个百度地图的key方才能使用,接下来,一步步教给大家如何去申请一个百度地图key 登录你的百度帐号,之后搜索---"百度地图api",如下图所示: 选择第一个,点击进去之后,往下拉,如图所示: 点击申请密钥,如图所示: 接下来如图所示: 接下去找Android SDK安全码,如图所示: 之后回到页面,将复制的东西拷贝到安全码那,之后写一个英文分号;   ,之后加上项目包名,就好,如下图: 点击提交之后,

Android百度地图开发(一)之初体验

转载请注明出处:http://blog.csdn.net/crazy1235/article/details/42614603 做关于位置或者定位的app的时候免不了使用地图功能,本人最近由于项目的需求需要使用百度地图的一些功能,所以这几天研究了一下,现写一下blog记录一下,欢迎大家评论指正! 一.申请AK(API Key) 要想使用百度地图sdk,就必须申请一个百度地图的api key.申请流程挺简单的. 首先注册成为百度的开发者,然后打开http://lbsyun.baidu.com/ap