Android实现地图服务
Android实现地图服务
开发工具:Andorid Studio 1.3
运行环境:Android 4.4 KitKat
代码实现
这里使用的是百度地图,具体配置方法请看官方文档即可。(也可以参考我的工程)
首先考虑到使用地图应用,需要上网权限和定位权限等,因此先添加相应的权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
当界面初始化的时候,建立地图指定到一个指定的中心点
//在使用SDK各组件之前初始化context信息,传入ApplicationContext
//注意该方法要再setContentView方法之前实现
SDKInitializer.initialize(getApplicationContext());
LatLng center = new LatLng(22.352921, 113.596621);
mapView = new MapView(this, new BaiduMapOptions().mapStatus(new MapStatus.Builder().target(center).build()));
setContentView(mapView);
手动设置一个当前位置,也就是地图的中心位置,并定位到此处。给地图上手动标注4个点,分别是图书馆、珠影超市、中国银行和体育馆。用一个小小的图标显示,并添加消息传递。(这里只展示其中两个点,写法基本一致)。然后为地图上的标注添加点击响应,显示相应的地点信息。
private void locateMap() {
baiduMap = mapView.getMap();
baiduMap.setBaiduHeatMapEnabled(true);
MyLocationData locationData = new MyLocationData.Builder().latitude(22.352921).longitude(113.596621).build();
baiduMap.setMyLocationData(locationData);
BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromResource(R.mipmap.location);
MyLocationConfiguration configuration = new MyLocationConfiguration(MyLocationConfiguration.LocationMode.NORMAL,
true, bitmapDescriptor);
baiduMap.setMyLocationConfigeration(configuration);
addMaker();
BaiduMap.OnMarkerClickListener listener = new BaiduMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
String info = marker.getExtraInfo().getString("info");
Toast.makeText(getApplicationContext(), info, Toast.LENGTH_SHORT).show();
return false;
}
};
baiduMap.setOnMarkerClickListener(listener);
}
private void addMaker() {
LatLng latLngA = new LatLng(22.349821, 113.595543);
BitmapDescriptor bitmapDescriptorA = BitmapDescriptorFactory.fromResource(R.mipmap.marker_a);
OverlayOptions optionsA = new MarkerOptions().position(latLngA).icon(bitmapDescriptorA).zIndex(9).draggable(true);
markerA = (Marker)(baiduMap.addOverlay(optionsA));
Bundle bundleA = new Bundle();
bundleA.putString("info", "图书馆");
markerA.setExtraInfo(bundleA);
/*********************************************************/
LatLng latLngB = new LatLng(22.35618, 113.592003);
BitmapDescriptor bitmapDescriptorB = BitmapDescriptorFactory.fromResource(R.mipmap.marker_b);
OverlayOptions optionsB = new MarkerOptions().position(latLngB).icon(bitmapDescriptorB).zIndex(9).draggable(true);
markerB = (Marker)(baiduMap.addOverlay(optionsB));
Bundle bundleB = new Bundle();
bundleB.putString("info", "珠影超市");
markerB.setExtraInfo(bundleB);
/*********************************************************/
LatLng latLngC = new LatLng(22.352821, 113.595615);
BitmapDescriptor bitmapDescriptorC = BitmapDescriptorFactory.fromResource(R.mipmap.marker_c);
OverlayOptions optionsC = new MarkerOptions().position(latLngC).icon(bitmapDescriptorC).zIndex(9).draggable(true);
markerC = (Marker)(baiduMap.addOverlay(optionsC));
Bundle bundleC = new Bundle();
bundleC.putString("info", "中国银行");
markerC.setExtraInfo(bundleC);
/*********************************************************/
LatLng latLngD = new LatLng(22.355788, 113.587332);
BitmapDescriptor bitmapDescriptorD = BitmapDescriptorFactory.fromResource(R.mipmap.marker_d);
OverlayOptions optionsD = new MarkerOptions().position(latLngD).icon(bitmapDescriptorD).zIndex(9).draggable(true);
markerD = (Marker)(baiduMap.addOverlay(optionsD));
Bundle bundleD = new Bundle();
bundleD.putString("info", "体育馆");
markerD.setExtraInfo(bundleD);
}
最后重载Activity的生命周期,添加上地图服务的上面周期
@Override
protected void onDestroy() {
super.onDestroy();
//在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
mapView.onDestroy();
}
@Override
protected void onResume() {
super.onResume();
//在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
mapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
//在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
mapView.onPause();
}
效果图

工程下载
传送门:下载
Android实现地图服务的更多相关文章
- arcgis for android访问arcgis server上自己制作部署的地图服务
转自:http://gaomw.iteye.com/blog/1110437 本项目的开发环境是eclipse3.5 + ADT11插件+arcgis for andorid 插件 + arcgis ...
- Android学习笔记----ArcGIS在线地图服务(Android API)坐标纠偏
仅限于如下ArcGIS在线地图服务(高德提供数据): //概述:彩色中文含兴趣点版中国基础地图 //投影:WGS 1984 Web-Mercator //切片格式:MIXED90 //服务类型:基础地 ...
- 重写TiledServiceLayer实现Arcgis访问Mapabc地图服务 (转载)
package com.baixin.main;/** * * @ClassName: MapAbcToArcGISTLayer * @Description: ArcGIS访问MapAb ...
- Android百度地图
帖子 热搜: 二维码 聊天 二维码扫描 传感器 游戏 定位 手势绘图 小项目 相框 绘图 涂鸦 拨打电话 记事本 定时器 通话记录 短信群发 listview 音乐播放器 项目例子 百度地 ...
- Android百度地图的简单实现
2015-06-13 最近学习了百度地图API的简单开发,现记录如下:(持续更新中) 百度地图API是为开发者免费提供的一套基于百度地图服务的应用接口,包括JavaScript API.Web服务AP ...
- 开源方案搭建可离线的精美矢量切片地图服务-3.Mapbox个性化地图定制入门
1.简介 mapbox是一家非常牛的公司,比如像特斯拉.DJI大疆创新.孤独星球.Airbnb.GitHub.Cisco.Snap.飞猪.Keep.Bosch这些在国内外各自领域中响当当的企业都是它的 ...
- Android百度地图(二)结合方向传感器我们自己定位哪里走
Android百度地图(二)结合方向传感器我们自己定位哪里走 本文代码在http://blog.csdn.net/xyzz609/article/details/51943556的基础上进一步改动.有 ...
- Android 百度地图 简单实现--- 美食搜索
Android 百度地图 简单实现--- 美食 依赖包: 加入 Android 百度依赖包: 1 key: <!-- 开发人员 key --> <meta-dat ...
- 【BIGEMAP一键离线地图服务】
地址:http://www.bigemap.com/offlinemaps/ 首页 离线地图 代码示例 项目案例 开发文档 关于我们 [BIGEMAP一键离线服务] 1.快速搭建离线地图服务2 ...
随机推荐
- WP_3种磁贴效果设置
private void ApplicationBarIconButton_Click_1(object sender, EventArgs e) { var tileData = new FlipT ...
- SQL笔记 [长期更新] (-2013.7)
--IF EXISTS(SELECT * FROM dbo.SysObjects WHERE ID = object_id(N'[TABLEA]') ) DROP TABLE tableA--CREA ...
- Oracle多线程并行使用、关联与指定索引执行
nologging AS SELECT /*+parallel(4) leading(s a) use_hash(A) index(s IDX_CS_SERVICE_RECORD_MD2_04) */ ...
- JAVA之多线程的创建
转载请注明源出处:http://www.cnblogs.com/lighten/p/5967853.html 1.概念 老调重弹,学习线程的时候总会牵扯到进程的概念,会对二者做一个区分.网上有较多的解 ...
- 遍历List/Map的时候删除成员遇到的奇怪问题
1.for each删除成员 List<String> list = new LinkedList<String>(); list.add("a"); li ...
- kickstart简介 20140707
kickstart是红帽发行版中的一种安装方式,它通过以配置文件的方式来记录linux系统安装是的各项参数和想要安装的软件.只要配置正确, 整个安装过程中无需人工交互参与,达到无人值守安装的目的,因而 ...
- Query for Component Path within PeopleSoft Portal
1) Run the below SQL to get the content reference name for your component ;-- Replace :1 with the c ...
- 利用JS实现的根据经纬度计算地球上两点之间的距离
最近用到了根据经纬度计算地球表面两点间距离的公式,然后就用JS实现了一下. 计算地球表面两点间的距离大概有两种办法. 第一种是默认地球是一个光滑的球面,然后计算任意两点间的距离,这个距离叫做大圆距 ...
- 自己一晚上总结的php基础知识!好累。好充实。
为了巩固自己的基础提升自己的技术.花了一晚上的时间结合w3c上的非常基础的东西,和自己的部分见解,写了不少,望大神们指正,指导.. <?php /* 这段话必须要写在开篇啊!死老猫,你又刺激我! ...
- 在xml中调用自己用java代码定义的View
1.在res中new一个class继承view.View,重写ondraw方法,写出自己的view package com.zzw.myView; import android.content.Con ...