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实现地图服务的更多相关文章

  1. arcgis for android访问arcgis server上自己制作部署的地图服务

    转自:http://gaomw.iteye.com/blog/1110437 本项目的开发环境是eclipse3.5 + ADT11插件+arcgis for andorid 插件 + arcgis ...

  2. Android学习笔记----ArcGIS在线地图服务(Android API)坐标纠偏

    仅限于如下ArcGIS在线地图服务(高德提供数据): //概述:彩色中文含兴趣点版中国基础地图 //投影:WGS 1984 Web-Mercator //切片格式:MIXED90 //服务类型:基础地 ...

  3. 重写TiledServiceLayer实现Arcgis访问Mapabc地图服务 (转载)

    package com.baixin.main;/** *  * @ClassName:   MapAbcToArcGISTLayer * @Description:    ArcGIS访问MapAb ...

  4. Android百度地图

        帖子   热搜: 二维码 聊天 二维码扫描 传感器 游戏 定位 手势绘图 小项目 相框 绘图 涂鸦 拨打电话 记事本 定时器 通话记录 短信群发 listview 音乐播放器 项目例子 百度地 ...

  5. Android百度地图的简单实现

    2015-06-13 最近学习了百度地图API的简单开发,现记录如下:(持续更新中) 百度地图API是为开发者免费提供的一套基于百度地图服务的应用接口,包括JavaScript API.Web服务AP ...

  6. 开源方案搭建可离线的精美矢量切片地图服务-3.Mapbox个性化地图定制入门

    1.简介 mapbox是一家非常牛的公司,比如像特斯拉.DJI大疆创新.孤独星球.Airbnb.GitHub.Cisco.Snap.飞猪.Keep.Bosch这些在国内外各自领域中响当当的企业都是它的 ...

  7. Android百度地图(二)结合方向传感器我们自己定位哪里走

    Android百度地图(二)结合方向传感器我们自己定位哪里走 本文代码在http://blog.csdn.net/xyzz609/article/details/51943556的基础上进一步改动.有 ...

  8. Android 百度地图 简单实现--- 美食搜索

    Android 百度地图 简单实现---  美食 依赖包: 加入 Android 百度依赖包: 1  key:  <!--        开发人员 key --> <meta-dat ...

  9. 【BIGEMAP一键离线地图服务】

    地址:http://www.bigemap.com/offlinemaps/ 首页 离线地图 代码示例 项目案例 开发文档 关于我们     [BIGEMAP一键离线服务] 1.快速搭建离线地图服务2 ...

随机推荐

  1. 【Python】django权限管理

    参考:http://www.cnblogs.com/esperyong/ 参考:https://docs.djangoproject.com/en/1.8/topics/auth/default/#t ...

  2. RAW格式

    一.什么是RAW文件?RAW文件主要是一种记录了数码相机传感器的原始信息,同时伴随着一些由相机所产生的一些元数据(metadata,诸如IS0的设置.快门速度.光圈值.白平衡等)的文件.不同的相机制造 ...

  3. c++ builder ListView实现可编辑任意列(转)

    // --------------------------------------------------------------------------- // Form的构造函数中填充StrinG ...

  4. Android IOS WebRTC 音视频开发总结(六五)-- 给韩国电信巨头做咨询

    本文主要总结咨询过程中的一些问题,文章最早发表在我们的微信公众号上,详见这里,欢迎关注微信公众号blackerteam 韩国电信巨头sk想了解国内移动互联网rtc现状,所以上周请我过去给他们的相关人员 ...

  5. js 定位到指定位置

     <script>    //滚动定位到product         function scroll() {             var scroll_offset = $(&quo ...

  6. MySQL 5.7.9 免安装配置

    MySQL 5.7.9 免安装配置 环境:win10 64位 mysql版本:mysql-5.7.9-winx64.zip (http://dev.mysql.com/downloads/mysql/ ...

  7. 一个用WPF做的简单计算器源代码

    一.界面设计XAML代码 <Window x:Class="fengjisuanqi.MainWindow" xmlns="http://schemas.micro ...

  8. 三种找回 linux root密码

    找回 linux root密码的三种方法 第1种方法: 1.在系统进入单用户状态,直接用passwd root去更改2.用安装光盘引导系统,进行linux rescue状态,将原来/分区挂接上来,作法 ...

  9. 个人代码管理--svn

    通常开发中遇到自己电脑和公司电脑代码共享的问题.比如一些通用的库,图片等项目中基本通用. 一些项目库如google code, github内地访问又挺困难的,常常无法连接,或者慢死..还有就是必须开 ...

  10. 【Delphi】从内存(MemoryStream)使用WMP(WindowsMediaPlayer)控件播放视频音频(Play Video with WMP from MemoryStream)

    关键字: MemoryStream.WMP.WindowsMediaPlayer.Play .Load. Delphi.C++.C#.ActiveX控件 作  者: CaiBirdy 问  题:正常使 ...