android百度导航实现,Android 集成百度地图实现设备定位
Android 集成百度地图实现设备定位
步骤1:
申请android 端SDK :
http://lbsyun.baidu.com/
步骤2:
下载基础版SDK
步骤3:
下载示例程序
步骤4:
开始集成:
ak加入
libs加入
SDKInitializer.setCoordType(CoordType.BD09LL);
图标
类
/**
* 演示覆盖物的用法
*/
public class OverlayDemo extends BaseActivity {
/**
* MapView 是地图主控件
*/
private MapView mMapView;
private BaiduMap mBaiduMap;
private Marker mMarkerA;
private Marker mMarkerB;
private Marker mMarkerC;
private Marker mMarkerD;
private InfoWindow mInfoWindow;
private SeekBar alphaSeekBar = null;
private CheckBox animationBox = null;
Double loc=0.00050;
// 初始化全局 bitmap 信息,不用时及时 recycle
BitmapDescriptor bdA = BitmapDescriptorFactory
.fromResource(R.drawable.icon_marka);
BitmapDescriptor bdB = BitmapDescriptorFactory
.fromResource(R.drawable.icon_markb);
BitmapDescriptor bdC = BitmapDescriptorFactory
.fromResource(R.drawable.icon_markc);
BitmapDescriptor bdD = BitmapDescriptorFactory
.fromResource(R.drawable.icon_markd);
BitmapDescriptor bd = BitmapDescriptorFactory
.fromResource(R.drawable.icon_gcoding);
BitmapDescriptor bdGround = BitmapDescriptorFactory
.fromResource(R.drawable.ground_overlay);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_overlay);
alphaSeekBar = (SeekBar) findViewById(R.id.alphaBar);
alphaSeekBar.setOnSeekBarChangeListener(new SeekBarListener());
animationBox = (CheckBox) findViewById(R.id.animation);
mMapView = (MapView) findViewById(R.id.bmapView);
mBaiduMap = mMapView.getMap();
MapStatusUpdate msu = MapStatusUpdateFactory.zoomTo(14.0f);
mBaiduMap.setMapStatus(msu);
initOverlay();
mBaiduMap.setOnMarkerClickListener(new BaiduMap.OnMarkerClickListener() {
public boolean onMarkerClick(final Marker marker) {
Button button = new Button(getApplicationContext());
button.setBackgroundResource(R.drawable.popup);
InfoWindow.OnInfoWindowClickListener listener = null;
if (marker == mMarkerA || marker == mMarkerD) {
button.setText("更改位置");
button.setTextColor(Color.BLACK);
button.setWidth(300);
listener = new InfoWindow.OnInfoWindowClickListener() {
public void onInfoWindowClick() {
LatLng ll = marker.getPosition();
LatLng llNew = new LatLng(ll.latitude 0.005,
ll.longitude 0.005);
marker.setPosition(llNew);
mBaiduMap.hideInfoWindow();
}
};
LatLng ll = marker.getPosition();
mInfoWindow = new InfoWindow(BitmapDescriptorFactory.fromView(button), ll, -47, listener);
mBaiduMap.showInfoWindow(mInfoWindow);
} else if (marker == mMarkerB) {
button.setText("更改图标");
button.setTextColor(Color.BLACK);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
marker.setIcon(bd);
mBaiduMap.hideInfoWindow();
}
});
LatLng ll = marker.getPosition();
mInfoWindow = new InfoWindow(button, ll, -47);
mBaiduMap.showInfoWindow(mInfoWindow);
} else if (marker == mMarkerC) {
button.setText("删除");
button.setTextColor(Color.BLACK);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
marker.remove();
mBaiduMap.hideInfoWindow();
}
});
LatLng ll = marker.getPosition();
mInfoWindow = new InfoWindow(button, ll, -47);
mBaiduMap.showInfoWindow(mInfoWindow);
}
return true;
}
});
}
public void initOverlay() {
loc=loc 0.0005;
// add marker overlay
LatLng llA = new LatLng(35.963175 loc, 110.400244 loc);
LatLng llB = new LatLng(39.942821, 116.369199);
LatLng llC = new LatLng(39.939723, 116.425541);
LatLng llD = new LatLng(39.906965, 116.401394);
MarkerOptions ooA = new MarkerOptions().position(llA).icon(bdA)
.zIndex(9).draggable(true);
if (animationBox.isChecked()) {
// 掉下动画
ooA.animateType(MarkerOptions.MarkerAnimateType.drop);
}
mMarkerA = (Marker) (mBaiduMap.addOverlay(ooA));
MarkerOptions ooB = new MarkerOptions().position(llB).icon(bdB)
.zIndex(5);
if (animationBox.isChecked()) {
// 掉下动画
ooB.animateType(MarkerOptions.MarkerAnimateType.drop);
}
mMarkerB = (Marker) (mBaiduMap.addOverlay(ooB));
MarkerOptions ooC = new MarkerOptions().position(llC).icon(bdC)
.perspective(false).anchor(0.5f, 0.5f).rotate(30).zIndex(7);
if (animationBox.isChecked()) {
// 生长动画
ooC.animateType(MarkerOptions.MarkerAnimateType.grow);
}
mMarkerC = (Marker) (mBaiduMap.addOverlay(ooC));
ArrayList giflist = new ArrayList();
giflist.add(bdA);
giflist.add(bdB);
giflist.add(bdC);
MarkerOptions ooD = new MarkerOptions().position(llD).icons(giflist)
.zIndex(0).period(10);
if (animationBox.isChecked()) {
// 生长动画
ooD.animateType(MarkerOptions.MarkerAnimateType.grow);
}
mMarkerD = (Marker) (mBaiduMap.addOverlay(ooD));
// add ground overlay
// LatLng southwest = new LatLng(39.92235, 116.380338);
// LatLng northeast = new LatLng(39.947246, 116.414977);
LatLng southwest = new LatLng(35.963175, 110.400244);
LatLng northeast = new LatLng(35.963170, 110.400240);
LatLngBounds bounds = new LatLngBounds.Builder().include(northeast)
.include(southwest).build();
OverlayOptions ooGround = new GroundOverlayOptions()
.positionFromBounds(bounds).image(bdGround).transparency(0.8f);
mBaiduMap.addOverlay(ooGround);
MapStatusUpdate u = MapStatusUpdateFactory
.newLatLng(bounds.getCenter());
mBaiduMap.setMapStatus(u);
mBaiduMap.setOnMarkerDragListener(new BaiduMap.OnMarkerDragListener() {
public void onMarkerDrag(Marker marker) {
}
public void onMarkerDragEnd(Marker marker) {
Toast.makeText(
OverlayDemo.this,
"拖拽结束,新位置:" marker.getPosition().latitude ", "
marker.getPosition().longitude,
Toast.LENGTH_LONG).show();
}
public void onMarkerDragStart(Marker marker) {
}
});
}
/**
* 清除所有Overlay
*
* @param view
*/
public void clearOverlay(View view) {
mBaiduMap.clear();
mMarkerA = null;
mMarkerB = null;
mMarkerC = null;
mMarkerD = null;
}
/**
* 重新添加Overlay
*
* @param view
*/
public void resetOverlay(View view) {
clearOverlay(null);
initOverlay();
}
private class SeekBarListener implements SeekBar.OnSeekBarChangeListener {
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// TODO Auto-generated method stub
float alpha = ((float) seekBar.getProgress()) / 10;
if (mMarkerA != null) {
mMarkerA.setAlpha(alpha);
}
if (mMarkerB != null) {
mMarkerB.setAlpha(alpha);
}
if (mMarkerC != null) {
mMarkerC.setAlpha(alpha);
}
if (mMarkerD != null) {
mMarkerD.setAlpha(alpha);
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
}
@Override
protected void onPause() {
// MapView的生命周期与Activity同步,当activity挂起时需调用MapView.onPause()
mMapView.onPause();
super.onPause();
}
@Override
protected void onResume() {
// MapView的生命周期与Activity同步,当activity恢复时需调用MapView.onResume()
mMapView.onResume();
super.onResume();
}
@Override
protected void onDestroy() {
// MapView的生命周期与Activity同步,当activity销毁时需调用MapView.destroy()
mMapView.onDestroy();
super.onDestroy();
// 回收 bitmap 资源
bdA.recycle();
bdB.recycle();
bdC.recycle();
bdD.recycle();
bd.recycle();
bdGround.recycle();
}
}来源:http://www.icode9.com/content-4-76301.html
android百度导航实现,Android 集成百度地图实现设备定位相关推荐
- android 百度导航滑动会异常,百度导航Android版问题集
软硬件环境 Macbook Pro MGX 72 Android Studio 1.4 酷比魔方7寸平板 百度导航SDK 3.0.0 运行导航Demo 首先还是常规路数,申请开发者账户,创建应用 Ba ...
- android百度导航demo,Android - 百度导航Demo,我们一起来踩坑!
Kotlin - 百度导航Demo,我们一起来踩坑! 背景 项目开发中,我们总是离不开定位.地图这些功能,当然有时候有了地图,那么导航就显得很有必要了.现在让我们开启百度导航吧! 第一步:磨刀不误砍柴 ...
- 百度导航hd android,百度导航HD版
百度导航HD版:在界面上有了更多的优化,添加了更多的导航数据.百度导航HD版适合在平板上运行,在手机上运行的话,感觉屏幕有点小,看起来不太舒服,个人喜好吧.在导航数据上,准确性比较高,适合出游或者跑远 ...
- android顶部导航高度,Android特效——————底部/顶部导航条(Fragment+ViewPaper+XTabLayout)...
初次使用xtablayout和viewpaper2.所以就弄了最基础的导航条 一.效果 二.代码 配置环境[在bulid.gradle中添加以下代码] implementation 'androidx ...
- Vue中集成高德地图API实现定位与自定义样式信息窗体
场景 若依前后端分离版手把手教你本地搭建环境并运行项目: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/108465662 在上面 ...
- android功能导航布局,Android全面屏虚拟导航栏适配
手机正朝着全面屏的方向演进,与此同时也给开发者带来了很多适配上的新问题,虚拟导航栏就是其中一个.最近在糗百的项目中,就有相关的适配问题,我查阅了目前关于虚拟导航栏适配的相关文章,基本上在全面屏手机里都 ...
- php获取百度导航栏,php利用百度javascript API实现导航
/** * 导航去门店 */ public function dpdh(){ // $userid = $this->init(); if ($_GET['id']) { $where['id' ...
- android listview 导航条,Android侧边导航栏+ListView基础实践
Android基础项目实践 文章首发于自己的github博客,https://lemonjuice98.github.io/ 本学期学习了Android的开发课程,期末也做了一款很萌新向的App作为课 ...
- android开发导航sdk,Android导航SDK开发指南(26页)-原创力文档
Android 导航SDK 开发指南 一.概述 Android 导航SDK 目前为V1.1 版本,以.jar 形式提供,请广大开发者使用SDK 前务必 在官网申请key,以便全部功能顺利使用. And ...
最新文章
- 零售行业SAP项目 --- SAP顾问向大数据转型的契机
- JSON Web Token - 在Web应用间安全地传递信息
- hdu1753大明A+B
- iOS UITouch 触摸事件处理
- JMeter接口测试示例(六)——上传文件
- 今天看到“黑涩会MM”了
- EIGRP的successor与fessible successor
- 消息队列技术介绍 : ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ、RocketMQ
- brew安装指定版本mysql,Mac 系统为 Valet 开发环境安装指定版本 MySQL
- 2021高值人才职业发展洞察:连接、信任与赋能
- html5判断用户摇晃了手机(转)
- 计算机页面高度怎么设置方法,win10系统调节任务栏高度的设置技巧
- 【渝粤教育】国家开放大学2018年春季 0179-21T数据库基础与应用 参考试题
- 二维码在线生成器如何批量制作设备标牌二维码
- 功能强大的在线网页编辑器
- 木兰编程语言,当事人最新回复来了
- Voting Disks的管理
- php watcher,vue 中的 watcher详解
- APP移动端自动化测试工具选型“兵器谱”一览(主流开源工具)
- 即便到愚人节,也千万别做的恶作剧!