百度地图如何逆向解析 parseint返回nan结果都是 NaN 这是为什么

百度地图ip定位,不算bug的bug - web_bill - 推酷
百度地图ip定位,不算bug的bug - web_bill
做为一个入行不足两年的菜鸟,能在博客园写下第一篇博客,是需要多大的勇气啊。主要还是怕大神们喷啊。其次自己文笔实在太差了。 哈哈~还请各位大神,口下留情啊。
首先说下我的需求:一个需要城市分站的手机站。 当用户访问时自动定位到用户所在的城市。因为之前做微信开发的时候,研究过一段时间的百度地图api,拿到这个需求后,第一时间想到的就是ip定位api. 先贴出百度官方的说明:
IP定位 API是一个根据IP返回对应位置信息的http形式位置服务接口,支持多种语言调用,如C# 、C++、Java等,即通过发送http请求,返回json格式的位置数据(包括坐标值、省份、城市、百度城市代码等)。
提供根据IP返回位置信息的功能,包括如下两种情况:
的位置信息:指定IP值,返回该IP对应的位置信息;
的地址信息:根据用户设备当前的IP返回位置信息;
,作为访问服务的依据;
第二步,拼写发送http请求的url,注意需使用第一步申请的ak;
第三步,接收http请求返回的数据(json格式)。
URL:http://api./location/ip
可选,ip不出现,或者出现且为空字符串的情况下,会使用当前访问者的IP地址作为定位参数
必选,在lbs云官网注册的access key,作为访问的依据
用户的权限签名
可选,若用户所用ak的校验方式为sn校验时该参数必须。(
输出的坐标格式
可选,coor不出现时,默认为百度墨卡托坐标;coor=bd09ll时,返回为百度经纬度坐标
返回值说明
返回结果(地址解析的结果)
&&&&address:&
&CN|北京|北京|None|CHINANET|1|None&
,&&&#地址&&
&&&&content:&&&&&&&#详细内容&&
&&&&address:&
,&&&#简要地址&&
&&&&address_detail:&&&&&&#详细地址信息&&
&&&&city:&
,&&&&&&&&#城市&&
&&&&city_code:&131,&&&&&&&#百度城市代码&&
&&&&district:&
,&&&&&&&&&&&#区县&&
&&&&province:&
,&&&#省份&&
&&&&street:&
,&&&&&&&&&&&&#街道&&
&&&&street_number:&
&&&&#门址&&
&&&&point:&&&&&&&&&&&&&&&#百度经纬度坐标值&&
&&&&status:&0&&&&&#返回状态码&&
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&
我的实现流程是在页面加载的时候,模拟执行http请求,根据返回值,判断当前所在的城市。然后显示不同城市的数据。
返回的结果如下:
1 {&address&:&CN|\u6d59\u6c5f|None|None|CHINANET|None|None&,&content&:{&address_detail&:{&province&:&\u6d59\u6c5f\u7701&,&city&:&&,&district&:&&,&street&:&&,&street_number&:&&,&city_code&:29},&address&:&\u6d59\u6c5f\u7701&,&point&:{&y&:&&,&x&:&&}},&status&:0}
然后解析这段json,就可以获取到当前所在的城市,和当前的地理位置经纬度了。
做到这里,没发现有什么端倪。 但当把程序发布后,部署到阿里云后,奇迹出现了,无论我用任何设备访问,获取的位置都是北京。思索很久,也不得所知,毕竟本地执行是正确的。后来无意中发现公司的阿里云的ip就是北京的,而获取到的ip就和阿里云的ip.当时的第一个想法就是百度的接口出现了bug,还蛮天真的给百度提交了bug反馈,希望他们能尽快修复,或者给我一个反馈。结果等了半个月,至今没任何信息。 唉,谁让咱太傻太天真了呢。
后来仔细想想,问题应该就是接口获取到的是服务器端的位置。 因为代码最终是通过客户端发起的请求,然后服务器端在响应的时候运行的。换个思路来讲,如果要定位客户端的话,就必须在客户端执行,想到这里,也就想到了解决方案了,那就是通过js,在客户端获取到位置信息,然后再跳转到对应的城市分站。
&script src=&/js/jquery-1.4.4.js&&&/script&
$(function () {
$.getJSON(&http://api./location/ip?ak=此处是百度地图分配的ak&callback=?&, function (data) {
alert(data.address);
由于要客户端执行,要考虑跨域的问题,所以在地址的后面要加上&callback=?,这样就可以调用接口返回来的信息了。
写完收工,大神请悠着点喷。欢迎指点。
还有,大家觉得这个算是一个bug吗?
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
没有分页内容
图片无法显示
视频无法显示
与原文不一致地图为什么总是上北下南--百度百家
地图为什么总是上北下南
分享到微信朋友圈
地图总是上北下南吗?古代地图有各种朝向,只是到了近代才趋于统一,这是一种必然的趋势还是偶然随机的产物?上北下南的通行地图又会碰上什么样的反对意见呢?
文/大象公会
地图就应该上北下南?
这是又一个约定俗成,极少有人会质疑的惯例——现代地图几乎清一色的上北下南。各国的绘制即使存在争议、差别,也都是本国是否处于图画中心,极少有人挑战南北方向。
这是“自古以来”的传统吗?
似乎是这样。古代中国,也许受西晋裴秀的地图集《禹贡地域图》影响,除了几乎无地图残存的元朝,宋到清的国家地图几乎清一色以北为上。
比如宋代《九域守令图》、《禹迹图》、《华夷图》、《地理图》;明代《广舆图》、《大明混一图》、《杨子器跋舆地图》等;大部分的清代全国地图,都是如此。
相对比较罕见的东上西下的明代全国地图
但并不是所有地图都如此。
古代海防图、边防图、方志附图等就没有统一的方位规则。南、北、东、西为上皆有出现。
清学者俞正燮《癸已存稿》中说:“凡舆地悬图宜以北为上,其几案展阅之图宜以南为上,以坐阅多向明也”也证明了这一点——制图人的主观判断很影响地图的方位。
世界范围内更不统一。比如古代阿拉伯人的地图习惯以南为上(可能是麦加圣城在阿拉伯世界的南方的原因),刚好和西方相反。更多的地区绘图本身就谈不上规范,就是根据现实需要制作——怎么方便怎么来,都没有一致的朝向。
12世纪上南下北的伊斯兰伊德里斯地图
是谁让地图变成以北为上的呢?
和大部分现代规范一样,还是欧洲人。他们的绘制习惯统一了全球的地图模式。
好像又一个欧洲中心思维的靶子可以被立起来了——他们将自己的国家放在地图的顶端,这是一贯的自大心态作祟。
且慢。真实的故事远比论断复杂,北上的确立既有偶然性,也和航海技术的发展息息相关。
这要从古代地中海地区开始说起。
【托勒密的世界地图】
上北下南地图的雏形可以追溯到今埃及的亚历山大港。
公元1世纪的世界贸易路线:亚历山大港(ALEXANDRIA)连接了地中海和红海、亚丁湾、印度洋、孟加拉湾和南中国海的海上贸易路线
罗马帝国时期,地中海内部以及和跨海域的海上贸易愈发繁荣。地中海东部货物集散地的亚历山大港人因此获取了丰富的欧亚大陆地理知识,为早期的地图制作提供了必要信息。
天文学家和地理学家托勒密是其中的佼佼者。当时,他完成了具有划时代意义的著作《地理学》——收集了约8000个地方的经纬度,附有27幅地图,描述了两种地图投影方法(将三维球面通过数学法则转换为二维平面方法)——最后一点尤为重要,它决定了地图的呈现方式。
什么是地图投影方法?
简而言之,是用一定的数学法则,把地球椭球面上的经纬网转换到平面上的方法。为什么要有这种投影方法呢?理由很实际——地球是一个不可展的球体,想象一下将地球仪的表面铺平,褶皱、拉伸和断裂当然不可避免。地图投影就是让曲面向平面有序转化的工具。
很可能是为了地图投影的便利,奠定了上北下南的位置分布。
托勒密就选择了以北为上的指向。他自然知道地球的地轴指向北极星,所以,对投影交集点的选择,最方便莫过于选定为北极上空某一点,将“北”方位置于地图的顶端。
托勒密伪圆锥投影世界地图(15世纪副本之一)
托勒密两种地图投影的交集点均为北极上空一点
但这个开端没有被罗马帝国之后的人们重视,地图绘制方向一度陷入混乱。中世纪时期,信仰成了欧洲人绘制世界地图的灵感来源,地图转变为多以东为上——《圣经》中的伊甸园被认为在世界的最东方。
这种情况持续了数百年之后,才又出现了另一种以北为上的地图。
【意大利城邦的海图】
11世纪,意大利城邦从阿拉伯帝国手中夺回了西西里岛等诸多地中海岛屿的控制权,并在第四次十字军东征(1202年-1204年)中将贸易区域拓展到东地中海。
一个看似意外的收获改变了欧洲——阿拉伯人流传的指南针,极大地提高了意大利城邦的航海技术。
指南针的使用当然影响了地图绘制,直接催生了更高水平的海图——公元13世纪末,意大利诸城邦的波特兰海图。它是迄今发现的最早欧洲海图。
具体而言,波特兰海图突破了以北极星为航海导航坐标的局限,以风雨无阻、稳定准确的指针替代。
指南针的一端指向北极星方向,北极星和指南针同时帮助定位,无疑更为保险。这强化了以北定位的传统,波特兰海图通常都是按照上北下南的方位绘制。
1502年葡萄牙的坎迪诺平面球形图(Cantino planisphere):属于波特兰型海图,这种海图的特征是确定一个大圆圆心(有时两个或三个),在这个圆心上放射出32条均匀分布的恒向线(也叫等角航线,在实际航行中总是和经线保持某一固定夹角的弧线)。同时将大圆的圆周平均分成十六等分,在圆周的每个等分点上绘制一个指南玫瑰,这些小的指南玫瑰(Compass rose)也均匀放射32条恒向线。依靠这些纵横交错构成网状的恒向线进行导航
融入了装饰美学的指南玫瑰:上端鸢尾花徽为北方标识,右端十字架为东方标识
大航海时代来临,波特兰海图应用在更为广阔的大西洋。1406年,被欧洲遗忘了一千多年的托勒密的《地理学》由拜占庭人安杰勒斯(Angelus)从希腊文翻译成拉丁文,其学说和地图成为当时南欧人最佳地理指南,不断积攒的经验,又促进更多的地图绘制。
1507年的瓦尔德西穆勒(Waldseemüller)地图,第一次呈现了美洲是一个独立的大陆:亚洲大陆的轮廓和“以北为上”的地图方位的绘制方法依旧沿袭了托勒密世界地图
但二者都有弊端——托勒密世界地图的大陆轮廓几乎是靠想象绘制;波特兰海图则没有考虑圆形地球的曲率,大范围的海域内使用,地图恒向线会有较大偏差。
1569年,佛兰德(今比利时北部)地理学家墨卡托绘制了第一张使用“墨卡托投影法”的航海世界地图,三维球面能通过数学方法转换成二维平面,并且能保证恒向线在地图上显示为直线。
也就是说,在这种地图上测量好出发地到目的地的恒向线和经线的角度之后,便可以一次性调整好航向,途中可以不用再调整航向便可到达目的地。
1569年墨卡托投影地图:地图保留了波特兰海图的指南玫瑰和纵横交错的恒向线
现代墨卡托投影地图及投影原理
16世纪末,墨卡托的朋友奥利特乌斯的《世界概观》地图集也发挥了重大影响——《世界概观》重复刊印了40多个版本,其译本遍及欧洲各主要语言。
墨卡托投影地图和奥利特乌斯地图都继承了“以北为上”的做法,一并影响了后来的近代科学陆图绘制习惯。
比如18世纪法国首幅用三角测量法、天文观测绘制的全国地图,就延续“北上”习惯。这是世界上第一幅全国范围使用三角测量法完成的国家地图,也被视为近代陆地科学制图学的开端。
1570奥特利乌斯世界地图:保留了托勒密地图的南方未知大陆,这也是传教士利玛窦世界地图的原型
实际上,只要有能稳定方向的工具,无论哪个方向为上,都可以操作,以北极星、指南针定轴线只是方便了北上倾向,并非必要条件。
但当时的地图绘制典型、投影学说都沿用了上北下南,此后,这一特点在欧洲确立。
1744年被三角网覆盖的法国地图(局部)
【欧洲绘图法的扩散】
此后,这种绘图法随着欧洲势力的全球扩张,紧随欧洲商人、传教士、统治者等的贸易、传教、殖民的脚步,统一了全世界的地图。
如日本受到葡萄牙商人的影响,17世纪初就采用波特兰海图;印度则在英国殖民者的带领下绘制近代地图。
而在传统力量强大的中国,欧洲绘图法又是怎么取代本土绘图法的呢?
传教士的作用不可小觑。1584年,传教士利玛窦在广东肇庆绘制了第一幅中文世界地图《舆地山海全图》。
利玛窦1602年的世界地图《坤舆万国全图》
1708年康熙下令编绘的国家地图《皇舆全览图》,也是在传教士杜德美、白晋等的主持下,用三角测量和天文观测的方法制成。不过,清朝的其他地图并未就此采用近代科学绘法,省志或者府县志仍然采用传统象形符号绘制。
直到民国时期,北洋政府制订“十年速测计划”,之后的南京政府制定“全国陆地测量十年计划”,中国的各种通用地图最终统一为“北上”朝向。
并不是所有人都喜欢现代地图惯例。南半球人民的痛恨当然能够理解——谁会觉得放在下方舒服呢?
于是,一些不喜欢被忽视的澳洲人,索性把地图翻转了过来:
澳洲upside down版本地图
台湾也很不服:按照上北下南方位绘制的地图,让本来具有海洋性格的台湾人,忽略了东面广阔的太平洋。因此,应台湾传统地图逆时针旋转九十度,如下:
台大地理系制作“换个角度看台湾”地图,将台湾地图摆放成了东上西下的方位
这并不能改变已经成型的“上北下南”原则——南半球的人民们还是再忍忍吧。
大象公会所有文章均为原创,
版权归大象公会所有。如希望转载,
请事前联系我们:
bd@idaxiang.org
知识 | 见识 | 见闻
阅读:15971
分享到微信朋友圈
在手机阅读、分享本文
还可以输入250个字
推荐文章RECOMMEND
本文是来自微信公众号【信海光微天下】的原创文章,首发百度百家
阅读:42万
阅读:36万
阅读:7418
热门文章HOT NEWS
香港的长期人口推算给内地一二线城市敲响警钟。
牛老师商业评论
新榜——内容创业服务平台
港股挖掘机
百度新闻客户端
百度新闻客户端
百度新闻客户端
扫描二维码下载
订阅 "百家" 频道
观看更多百家精彩新闻后使用快捷导航没有帐号?
只需一步,快速开始
查看: 4098|回复: 13
在线时间44 小时经验值112 最后登录注册时间帖子阅读权限40UID
高中生, 积分 112, 距离下一级还需 88 积分
TA的每日心情无聊 21:34签到天数: 8 天[LV.3]偶尔看看II
G币29 最后登录注册时间
马上注册,结交更多机友,下载更多应用,让你轻松玩转手机。
已有帐号?   下载游戏和软件,请【】进入机锋市场!
百度地图语音导航组件每次下完都是解析包错误怎么回事?
安装不了呀,每次解析包错误郁闷,不知道怎么搞,会弄的给解答一下!
在线时间1183 小时经验值1341 最后登录注册时间帖子阅读权限80UID708983
研究生, 积分 1341, 距离下一级还需 359 积分
TA的每日心情奋斗 11:37签到天数: 66 天[LV.6]常住居民II
G币665 最后登录注册时间
估计是还没支持JB吧 我也这样
在线时间510 小时经验值371 最后登录注册时间帖子阅读权限50UID1613489
大学专科, 积分 370, 距离下一级还需 30 积分
该用户从未签到
G币86 最后登录注册时间
17:52 上传
点击文件名下载附件
下载积分: G币 -1
wanyanxinxing
& &用这个附件直接装就好了!
80 字节以内
不支持自定义 Discuz! 代码
在线时间1808 小时经验值1669 最后登录注册时间帖子阅读权限80UID1151935
研究生, 积分 1669, 距离下一级还需 31 积分
TA的每日心情无聊 08:40签到天数: 7 天[LV.3]偶尔看看II
G币2518 最后登录注册时间
谢谢你了& &终于搞定了
安卓,我顶。
在线时间0 小时经验值1 最后登录注册时间帖子阅读权限10UID
幼儿园, 积分 1, 距离下一级还需 14 积分
该用户从未签到
G币0 最后登录注册时间
zhunan890124 发表于
回复 3# no-wings
谢谢你了& &终于搞定了
吧毛病v迷和你们
在线时间36 小时经验值92 最后登录注册时间帖子阅读权限30UID6926318
初中生, 积分 92, 距离下一级还需 8 积分
TA的每日心情奋斗 08:38签到天数: 2 天[LV.1]初来乍到
G币23 最后登录注册时间
这个回答太好了。。。
在线时间6 小时经验值500 最后登录注册时间帖子阅读权限60UID
大学本科, 积分 500, 距离下一级还需 200 积分
TA的每日心情擦汗 09:32签到天数: 300 天[LV.8]以坛为家I
G币3096 最后登录注册时间
啦啦啦,看帖必回。。
在线时间20 小时经验值77 最后登录注册时间帖子阅读权限30UID
初中生, 积分 77, 距离下一级还需 23 积分
该用户从未签到
G币14 最后登录注册时间
非常感谢 !!!!!!
在线时间0 小时经验值4 最后登录注册时间帖子阅读权限10UID
幼儿园, 积分 4, 距离下一级还需 11 积分
该用户从未签到
G币0 最后登录注册时间
内容ffgggggh
在线时间0 小时经验值4 最后登录注册时间帖子阅读权限10UID
幼儿园, 积分 4, 距离下一级还需 11 积分
该用户从未签到
G币0 最后登录注册时间
内容ffgggggh
Powered by利用百度地图API开发地图软件,在循环标示数组的时候,进入click监听器,每次输出循环遍历的i值的都是数组的长度,如何解决???
[问题点数:100分,结帖人u]
利用百度地图API开发地图软件,在循环标示数组的时候,进入click监听器,每次输出循环遍历的i值的都是数组的长度,如何解决???
[问题点数:100分,结帖人u]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
本帖子已过去太久远了,不再提供回复功能。2409人阅读
1、屏幕坐标转换经纬度
//将像素坐标转为地址坐标
Projection mProjection = BMapView.getProjection();
GeoPoint pt = mProjection.fromPixels((int)touchX,(int)touchY);
2、替换搜索结果覆盖物的样式
(1)创建OverItemT,继承ItemizedOverlay&OverlayItem&
import java.util.ArrayL
import android.graphics.C
import android.graphics.drawable.D
import com.baidu.mapapi.ItemizedO
import com.baidu.mapapi.MapV
import com.baidu.mapapi.OverlayI
public class OverItemT extends ItemizedOverlay&OverlayItem& {
private ArrayList&OverlayItem& mOverlays = new ArrayList&OverlayItem&();
//defaultMarker替换百度API中覆盖物样式
public OverItemT(Drawable defaultMarker) {
super(boundCenterBottom(defaultMarker));
public int size() {
return mOverlays.size();
protected OverlayItem createItem(int i) {
return mOverlays.get(i);
public void addOverlay(OverlayItem overlay) {
mOverlays.add(overlay);
populate();
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
super.draw(canvas, mapView, shadow);
protected boolean onTap(int index) {
return super.onTap(index);
(2)把覆盖物添加到MapView上,用invalidate刷新
OverItemT overlay = new OverItemT(drawable);
for (int i = 0; i & res.getAllPoi().size(); i++) {
OverlayItem item = new OverlayItem(res.getPoi(i).pt,
&站点&, &站点信息&); // 点,标题,文字片段。
overlay.addOverlay(item);
BMapView.getOverlays().clear();
BMapView.getOverlays().add(overlay);
BMapView.invalidate();
3、处理地图长按、轻触、滑动等事件
(1)由于地图上有各种手势事件触发,那么我们会用到GestureDetector来处理这些事情,下面介绍GestureDetector:
GestureDetector里面会实现以下方法:
onSingleTapUp、onShowPress、onScroll、onLongPress、onFling、onDown
这些方法都是由MotionEvent触发的。
onSingleTapUp& 用户轻触屏幕后松开,由ACTION_UP触发,事件执行顺序为onDown-&onShowPress-&onSingleTapUp。
onShowPress 用户轻触屏幕后,没有任何的松动或拖动才会触发,由ACTION_DOWN触发,与onDown的区别是,onDown只要用户触摸触摸屏就会触发,若松动或拖动,就不会触发onShowPress,反之,则触发。
onLongPress& 顾名思义,用户长时间触摸屏幕,由ACTION_DOWN触发,事件执行顺序为onDown-&onShowPress-&onLongPress。
onFling 用户按下触摸屏、快速移动后松开,由1个MotionEvent ACTION_DOWN, 多个ACTION_MOVE, 1个ACTION_UP触发
(2)现在,我们定义一个长按层 LongPressOverlay:
这里需要注意一点,想让自定义的View实现各种手势,需设置onTouchEvent,gestureDetector.onTouchEvent(event);
各个实现方法,由具体需要自己修改即可,这里我处理的是长按事件!
构造方法中的Handler,用途是处理长按以后的事件,把一些覆盖物放置在地图上;我在handler中做的是搜索触摸点1公里范围内的公交站点,并显示在地图上。
import com.baidu.mapapi.MapC
import com.baidu.mapapi.MapV
import com.baidu.mapapi.O
import com.buscall.ui.MapS
import android.os.H
import android.view.GestureD
import android.view.GestureDetector.OnDoubleTapL
import android.view.GestureDetector.OnGestureL
import android.view.MotionE
* @ClassName: LongPressOverlay
* @Descrioption: 地图长按层
* @author LiZhen
public class LongPressOverlay extends Overlay implements OnDoubleTapListener,OnGestureListener{
private MapSearch mC
private MapView mMapV
private Handler mH
private GestureDetector gestureScanner = new GestureDetector(this);
public LongPressOverlay(MapSearch context, MapView mapView, Handler handler,MapController mapCtrl){
mContext =
mMapView = mapV
mHandler =
public boolean onTouchEvent(MotionEvent event, MapView mapView) {
mContext.touchX = event.getX();
mContext.touchY = event.getY();
return gestureScanner.onTouchEvent(event);
public boolean onSingleTapConfirmed(MotionEvent e) {
public boolean onDoubleTap(MotionEvent e) {
public boolean onDoubleTapEvent(MotionEvent e) {
public boolean onDown(MotionEvent e) {
public void onShowPress(MotionEvent e) {
public boolean onSingleTapUp(MotionEvent e) {
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
public void onLongPress(MotionEvent e) {
mContext.locPoint = mMapView.getProjection().fromPixels((int) e.getX(),
(int) e.getY());
mHandler.sendEmptyMessage(mContext.MSG_VIEW_LONGPRESS);
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
(3)MapActivity中添加长按层和编写Handler
把下面这句话加在onCreate中,
BMapView.getOverlays().add(new LongPressOverlay(MapSearch.this, BMapView, mHandler, mMapController));
在这简单的定义Handler了,如下:
private Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case MSG_VIEW_LONGPRESS:// 处理长按时间返回位置信息
System.out.println(&附近站点个数:& + overlay.size());
CircleOverlay circle = new CircleOverlay(pt, MapSearch.this);
BMapView.getOverlays().clear();
BMapView.getOverlays().add(overlayRemind);
BMapView.getOverlays().add(mylocTest);
BMapView.getOverlays().add(overlay);
BMapView.getOverlays().add(circle);
BMapView.getOverlays().add(new LongPressOverlay(MapSearch.this, BMapView, mHandler, mMapController));
BMapView.invalidate();
if (c.getCount() & 0)
BMapView.getController().animateTo(pt);
case UPDATEUI:
到这就实现了长按事件!
4、点击OverlayItem,弹出信息层,如上图所示:点击像站牌的小图标,弹出“光华桥西”字样的信息框
(1)要知道,这个点击事件是在ItemizedOverlay类中的onTap(int index),index表示按的是具体哪个OverlayItem,所以处理事件在这里编写;
public class OverItemT extends ItemizedOverlay&OverlayItem& {
private ArrayList&OverlayItem& mOverlays = new ArrayList&OverlayItem&();
private MapSearch mC
//defaultMarker替换百度API中覆盖物样式
public OverItemT(Drawable defaultMarker , Context context) {
super(boundCenterBottom(defaultMarker));
this.mContext = (MapSearch)
public int size() {
return mOverlays.size();
protected OverlayItem createItem(int i) {
return mOverlays.get(i);
public void addOverlay(OverlayItem overlay) {
mOverlays.add(overlay);
populate();
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
super.draw(canvas, mapView, shadow);
protected boolean onTap(int index) {
return super.onTap(index);
(2)编写popView.xml,样式如下:
关于上面显示的每个item信息从何而来呢?
注意OverlayItem的构造方法:
point, java.lang.String title, java.lang.String snippet)
参数分别代表 点、标题、文字,我们可以把item的信息存储在这里。
只需设置popView的显示与隐藏,就可以实现效果
这样我们就做好了弹出信息框。
5、搜索sqlite数据库中,范围1公里的公交站点
经度0.0009代表100米
纬度0.0012代表100米
sql语句为:select * from& api_station where ((abs(XCoord-?)/0.0012)*(abs(XCoord-?)/0.0012) + (abs(YCoord-?)/0.0009)*(abs(YCoord-?)/0.0009))&100;
没有找到sqlite中平方用什么方法,只好上面这么写了。
6、真实经纬度数据转化成百度地图的经纬度数据,标识在地图上
将其他坐标系转换到百度坐标系,自V1.1版本之后提供
包:com.baidu.mapapi
类:CoordinateConvert
接口摘要说明:
fromWgs84ToBaidu()
从gps坐标系或mapbar坐标系转换到百度坐标系,
返回结果为经过Base64加密之后字符串
fromGcjToBaidu()
从google坐标系、51地图坐标系、mapcabc坐标系转换到百度坐标系(51地图坐标需要先除10000),
返回结果为经过Base64加密之后的字符串
bundleDecode()
加密bundle到坐标的转换函数
详细说明:
fromWgs84ToBaidu
static public Bundle fromWgs84ToBaidu(GeoPoint ptWgs84)
从gps坐标系或mapbar坐标系转换到百度坐标系.
ptWgs84- gps坐标或mapbar坐标
返回bundle,内含x,y两个字段。均为经过Base64加密之后的字符串,可调用bundleDecode()函数进行解析
fromGcjToBaidu
static public Bundle fromGcjToBaidu
(GeoPoint ptGcj)
从google坐标系、51地图坐标系、mapabc坐标系转换到百度坐标系.<span style="color:#地图坐标需要先除<span style="color:#000
ptGcj- google坐标或mapabc坐标或51地图坐标(51地图坐标需要先除10000)
返回bundle,内含x,y两个字段。均为经过Base64加密之后的字符串,可调用bundleDecode()函数进行解析
bundleDecode
static public GeoPoint bundleDecode(Bundle encryptBundle)
将加密之后的坐标bundle进行解析
encryptBundle – 加密后的坐标bundle
返回GeoPoint结构,内含解析之后的x,y坐标
该类提供的转换函数仅供获得授权后的厂商或开发者使用,禁止在公共网站,论坛或其他公共场合进行公布或宣传。
CoordinateConvert coordinateConvert = new CoordinateConvert();
Bundle bundle = coordinateConvert.fromWgs84ToBaidu(gp);
int x = coordinateConvert.bundleDecode(bundle).getLatitudeE6();
int y = coordinateConvert.bundleDecode(bundle).getLongitudeE6();
System.out.println(x+& , &+y);
7、捕获百度地图平移结束事件
MapView.regMapViewListener(BMapManager, new mMKMapViewListener());
class mMKMapViewListener implements MKMapViewListener{
public void onMapMoveFinish() {
// ...处理地图平移结束后的操作
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:132028次
积分:2053
积分:2053
排名:第12999名
原创:78篇
转载:20篇
评论:34条
(1)(1)(1)(1)(2)(3)(7)(10)(1)(2)(1)(7)(4)(7)(2)(10)(13)(7)(1)(16)(3)}

我要回帖

更多关于 dns逆向解析 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信