import android.content.Context;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Color;import com.amap.api.location.AMapLocationClient;import com.amap.api.location.AMapLocationClientOption;import com.amap.api.location.AMapLocationListener;import com.amap.api.maps.AMap;import com.amap.api.maps.CameraUpdateFactory;import com.amap.api.maps.model.BitmapDescriptorFactory;import com.amap.api.maps.model.CameraPosition;import com.amap.api.maps.model.LatLng;import com.amap.api.maps.model.Marker;import com.amap.api.maps.model.MarkerOptions;import com.amap.api.maps.model.PolylineOptions;import java.util.List;/** * 高德地图帮助类

* Note: 简化常见的操作 */
public class AMapHelper { private static final String KEY_TAG = "AMapHelper"; /** * 开启高德定位 * * @param context 上下文 * @param listener AMapLocationListener接口 * @param isOnce 是否只定位一次 */ public static void startLocation(Context context, AMapLocationListener listener, Boolean isOnce) { AMapLocationClient mlocationClient = new AMapLocationClient(context); //初始化定位参数 final AMapLocationClientOption mLocationOption = new AMapLocationClientOption(); mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy); if (isOnce) { // 设置仅成功定位一次 mLocationOption.setOnceLocation(true); } // 定位间隔 mLocationOption.setInterval(2000); mlocationClient.setLocationOption(mLocationOption); //设置定位监听 mlocationClient.setLocationListener(listener); mlocationClient.startLocation(); } /** * 绘制自定义点标记 * * @param context 上下文 * @param amap AMap对象 * @param title 标题 * @param latlng 要绘制的点 * @param resDrawableId 图片的资源id * @return 成功绘制的 Marker */ public static Marker drawCustomMaker(Context context, AMap amap, String title, LatLng latlng, int resDrawableId) { MarkerOptions markerOption = new MarkerOptions(); markerOption.title(title) .position(latlng) .icon(BitmapDescriptorFactory.fromBitmap(BitmapFactory .decodeResource(context.getResources(), resDrawableId))); Marker marker = amap.addMarker(markerOption); return marker; } /** * 绘制自定义点标记 * * @param context 上下文 * @param amap AMap对象 * @param title 标题 * @param latlng 要绘制的点 * @param bitmap 位图 * @return 绘制完成的Marker */ public static Marker drawCustomMaker(Context context, AMap amap, String title, LatLng latlng, Bitmap bitmap) { MarkerOptions markerOption = new MarkerOptions(); markerOption.title(title) .position(latlng) .icon(BitmapDescriptorFactory.fromBitmap(bitmap)); Marker marker = amap.addMarker(markerOption); return marker; } /** * 绘制线 * * @param amap AMap对象 * @param latLngs 经纬度坐标集合 * @param lineWidth 绘制线的宽度 * @param lineColor 绘制线的颜色 格式如:"#ff0000" */ public static void drawPolyline(AMap amap, List latLngs, float lineWidth, String lineColor) { PolylineOptions options = new PolylineOptions() .addAll(latLngs) .width(lineWidth) .color(Color.parseColor(lineColor)); amap.addPolyline(options); } /** * 移动地图中心到指定位置 * * @param aMap * @param latLng 经纬度坐标 * @param zoomLevel 缩放级别,地图的缩放级别一共分为 17 级,从 3 到 19。数字越大,展示的图面信息越精细。 */ public static void quickCam(AMap aMap, LatLng latLng, float zoomLevel) { CameraPosition postion = new CameraPosition(latLng, zoomLevel, 0, 0); aMap.moveCamera(CameraUpdateFactory.newCameraPosition(postion)); } /** * 开启夜间模式 * * @param aMap * @param isNightMode true表示开启 */ public static void enableNightMode(AMap aMap, boolean isNightMode) { if (isNightMode) { aMap.setMapType(AMap.MAP_TYPE_NIGHT); } else { aMap.setMapType(AMap.MAP_TYPE_NORMAL); } } /** * 跳转到高德进行导航 * * @param context 上下文 * @param targetLatLng 目标经纬度坐标 */ public static void openGaodeApp(Context context, LatLng targetLatLng) { if (targetLatLng == null) { //TODO 目标地址不存在 return; } try { Intent intent = new Intent("android.intent.action.VIEW", android.net.Uri.parse("androidamap://navi?sourceApplication=某某公司&lat=" + targetLatLng.latitude + "&lon=" + targetLatLng.longitude + "&dev=1&style=2")); intent.setPackage("com.autonavi.minimap"); intent.addCategory("android.intent.category.DEFAULT"); context.startActivity(intent); } catch (Exception e) { //TODO 地址解析错误 e.printStackTrace(); } }}

更多相关文章

  1. Android(安卓)定位GPS的使用
  2. android用贝塞尔曲线完成viewpager轮播指示器
  3. Chapter5-Android(安卓)Scroll 分析
  4. android-UI组件实例大全(十六)---菜单Menu
  5. android绝对布局
  6. Android中ListView通过ContextMenu删除当前点击的一行数据
  7. Android高德获取逆地址编码(经纬度坐标-地址描述如省市区街道)
  8. Android自定义View之贝塞尔曲线图
  9. Android:触摸移动的悬浮窗口

随机推荐

  1. Android(安卓)开发者该学点Linux 命令了
  2. ANDROID 【GRIDVIEW】 DETAILED ANNOTATI
  3. How to Run Android(安卓)Applications o
  4. Android点击通知栏,不启动新的activity
  5. Android判断当前的Activity
  6. Drawable简单使用
  7. android 分享功能
  8. android 打电话
  9. Android(安卓)AGPS 定位 测试程序
  10. OpenGL ES教程VI之纹理贴图(原文对照)