代码:
Main:

package com.example.arjun02;import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.media.ExifInterface;
import android.net.Uri;
import android.os.Environment;
import android.os.Message;
import android.provider.MediaStore;
import android.provider.SyncStateContract;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationClient;
import com.amap.api.location.AMapLocationClientOption;
import com.amap.api.location.AMapLocationListener;
import com.amap.api.maps2d.AMap;
import com.amap.api.maps2d.MapView;
import com.amap.api.maps2d.model.BitmapDescriptor;
import com.amap.api.maps2d.model.BitmapDescriptorFactory;
import com.amap.api.maps2d.model.LatLng;
import com.amap.api.maps2d.model.Marker;
import com.amap.api.maps2d.model.MarkerOptions;import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Handler;import static com.example.arjun02.R.id.mapView;
import static com.example.arjun02.R.id.textView;public class MainActivity extends AppCompatActivity {private static final String TAG = "Arjun";private static final int MEDIA_TYPE_IMAGE = 0x001;private static final int CAPTURE_IMAGE_REQUEST_CODE = 0x100;private Button button;private static String path;private TextView txt;private float lat, lng;private MapView mMapView = null;private AMap aMap;private MarkerOptions markerOption;private Button btnLocation;//声明mLocationOption对象public AMapLocationClientOption mLocationOption = null;private AMapLocationClient mlocationClient;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView(savedInstanceState);initLocation();}private void initView(Bundle savedInstanceState) {button = (Button) findViewById(R.id.button);btnLocation = (Button) findViewById(R.id.btn_location);txt = (TextView) findViewById(R.id.textView);//获取地图控件引用mMapView = (MapView) findViewById(R.id.mapView);//在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),实现地图生命周期管理mMapView.onCreate(savedInstanceState);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {takePic();}});btnLocation.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {takeGPS();}});}/*** 定位*/private void takeGPS() {启动定位mlocationClient.startLocation();}android.os.Handler handler = new android.os.Handler() {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);String info = String.valueOf(msg.obj);txt.setText(info);}};private void initLocation() {mlocationClient = new AMapLocationClient(this);初始化定位参数mLocationOption = new AMapLocationClientOption();设置定位监听mlocationClient.setLocationListener(new AMapLocationListener() {@Overridepublic void onLocationChanged(AMapLocation amapLocation) {StringBuilder stringBuilder = new StringBuilder();if (amapLocation != null) {if (amapLocation.getErrorCode() == 0) {//定位成功回调信息,设置相关消息stringBuilder.append("\n类型:" + amapLocation.getLocationType());//获取当前定位结果来源,如网络定位结果,详见定位类型表stringBuilder.append("\n纬度:" + amapLocation.getLatitude());//获取纬度stringBuilder.append("\n经度:" + amapLocation.getLongitude());//获取经度stringBuilder.append("\n精度:" + amapLocation.getAccuracy());//获取精度信息stringBuilder.append("\n地址:" + amapLocation.getAddress());//获取地址信息SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date date = new Date(amapLocation.getTime());stringBuilder.append("\n" + "时间:").append(df.format(date));//定位时间if (aMap == null) {aMap = mMapView.getMap();}aMap.clear();LatLng latLng = new LatLng(amapLocation.getLatitude(), amapLocation.getLongitude());final Marker marker = aMap.addMarker(new MarkerOptions().position(latLng).title("详细地址:").snippet(amapLocation.getAddress()));} else {//显示错误信息ErrCode是错误码,errInfo是错误信息,详见错误码表。Log.e("AmapError", "location Error, ErrCode:"+ amapLocation.getErrorCode() + ", errInfo:"+ amapLocation.getErrorInfo());stringBuilder.append("定位错误:" + amapLocation.getErrorInfo());}} else {stringBuilder.append("定位失败");}Message msg = Message.obtain();msg.obj = stringBuilder.toString();handler.sendMessage(msg);}});设置定位模式为高精度模式,Battery_Saving为低功耗模式,Device_Sensors是仅设备模式mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);设置定位间隔,单位毫秒,默认为2000ms
//        mLocationOption.setInterval(2000);设置定位参数mlocationClient.setLocationOption(mLocationOption);
//        /设置是否返回地址信息(默认返回地址信息)mLocationOption.setNeedAddress(true);}/*拍照*/private void takePic() {Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);Uri uri = Uri.fromFile(getOutputMediaFile(MEDIA_TYPE_IMAGE));intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);startActivityForResult(intent, CAPTURE_IMAGE_REQUEST_CODE);}private static File getOutputMediaFile(int type) {File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "arjun_app");if (!mediaStorageDir.exists()) {if (!mediaStorageDir.mkdirs()) {Log.d(TAG, "目录创建失败");return null;}}String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());File mediaFile = null;if (type == MEDIA_TYPE_IMAGE) {mediaFile = new File(mediaStorageDir.getPath() + File.separator +"IMG_" + timeStamp + ".jpg");}path = mediaFile.getPath();return mediaFile;}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (requestCode == CAPTURE_IMAGE_REQUEST_CODE) {if (resultCode == RESULT_OK) {Toast.makeText(this, path, Toast.LENGTH_LONG).show();setPicInfo();} else if (resultCode == RESULT_CANCELED) {Toast.makeText(this, "capture image canceled.",Toast.LENGTH_LONG).show();} else {Toast.makeText(this, "Image capture failed.",Toast.LENGTH_LONG).show();}}}private void setPicInfo() {try {ExifInterface exifInterface = new ExifInterface(path);String datetime = exifInterface.getAttribute(ExifInterface.TAG_DATETIME);// 拍摄时间String deviceName = exifInterface.getAttribute(ExifInterface.TAG_MAKE);// 设备品牌String deviceModel = exifInterface.getAttribute(ExifInterface.TAG_MODEL); // 设备型号String latValue = exifInterface.getAttribute(ExifInterface.TAG_GPS_LATITUDE);String lngValue = exifInterface.getAttribute(ExifInterface.TAG_GPS_LONGITUDE);String latRef = exifInterface.getAttribute(ExifInterface.TAG_GPS_LATITUDE_REF);String lngRef = exifInterface.getAttribute(ExifInterface.TAG_GPS_LONGITUDE_REF);if (latValue != null && latRef != null && lngValue != null && lngRef != null) {try {lat = convertRationalLatLonToFloat(latValue, latRef);lng = convertRationalLatLonToFloat(lngValue, lngRef);txt.setText("  " + lat + "\n" + lng);LatLng latLng = new LatLng(lat, lng);aMap = mMapView.getMap();aMap.clear();final Marker marker = aMap.addMarker(new MarkerOptions().position(latLng).title("北京").snippet("自己的位置自己的位置自己的位置"));//                    markerOption = new MarkerOptions();
//                    markerOption.position(latLng);
//                    markerOption.title("自己的位置").snippet("自己的位置自己的位置自己的位置自己的位置");
//
//                    markerOption.draggable(true);//                    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
//                    BitmapFactory.Options options = new BitmapFactory.Options();
//                    options.inJustDecodeBounds = true;
//                    Bitmap bitmap = BitmapFactory.decodeFile(path,options);
//                    int height = options.outHeight * 200 / options.outWidth;
//                    options.outWidth = 200;
//                    options.outHeight = 200;BitmapDescriptor var1 = BitmapDescriptorFactory.fromBitmap(decodeFile(path, 100));
//                    markerOption.icon(var1);
//                    markerOption.icon( BitmapDescriptorFactory.fromBitmap());// 将Marker设置为贴地显示,可以双指下拉看效果
//                    markerOption.setGps(true);marker.setIcon(var1);} catch (IllegalArgumentException e) {e.printStackTrace();}}} catch (IOException e) {e.printStackTrace();}}public static Bitmap decodeFile(String pathName, int reqWidth) {final BitmapFactory.Options options = new BitmapFactory.Options();options.inJustDecodeBounds = true;BitmapFactory.decodeFile(pathName, options);
// 源图片的宽度final int width = options.outWidth;// 调用上面定义的方法计算inSampleSize值(inSampleSize值为图片压缩比例)options.inSampleSize = calculateInSampleSize(options, reqWidth);/*** 第二轮解析,负责具体压缩*/// 使用获取到的inSampleSize值再次解析图片options.inJustDecodeBounds = false;return BitmapFactory.decodeFile(pathName, options);}public static int calculateInSampleSize(BitmapFactory.Options options,int reqWidth) {// 源图片的宽度final int width = options.outWidth;int inSampleSize = 1;if (width > reqWidth) {// 计算出实际宽度和目标宽度的比率final int widthRatio = Math.round((float) width / (float) reqWidth);inSampleSize = widthRatio;}return inSampleSize;}private static float convertRationalLatLonToFloat(String rationalString, String ref) {String[] parts = rationalString.split(",");String[] pair;pair = parts[0].split("/");double degrees = Double.parseDouble(pair[0].trim())/ Double.parseDouble(pair[1].trim());pair = parts[1].split("/");double minutes = Double.parseDouble(pair[0].trim())/ Double.parseDouble(pair[1].trim());pair = parts[2].split("/");double seconds = Double.parseDouble(pair[0].trim())/ Double.parseDouble(pair[1].trim());double result = degrees + (minutes / 60.0) + (seconds / 3600.0);if ((ref.equals("S") || ref.equals("W"))) {return (float) -result;}return (float) result;}@Overrideprotected void onDestroy() {super.onDestroy();//在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理mMapView.onDestroy();}@Overrideprotected void onResume() {super.onResume();//在activity执行onResume时执行mMapView.onResume (),实现地图生命周期管理mMapView.onResume();}@Overrideprotected void onPause() {super.onPause();//在activity执行onPause时执行mMapView.onPause (),实现地图生命周期管理mMapView.onPause();}@Overrideprotected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);//在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState),实现地图生命周期管理mMapView.onSaveInstanceState(outState);}
}

build.gradle

 compile files('libs/AMap_Location_V3.00_20160922.jar')compile files('libs/Amap_2DMap_V2.9.1_20160825.jar')

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.arjun02"><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" /><uses-permission android:name="android.permission.CAMERA" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><!--用于访问网络定位--><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/><!--用于访问GPS定位--><application android:allowBackup="true" android:icon="@mipmap/ic_launcher"android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme" ><meta-data android:name="com.amap.api.v2.apikey" android:value="8c4037311c442121b84b6c664500d040"></meta-data><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><service android:name="com.amap.api.location.APSService"></service></application></manifest>

Android高德地图试用相关推荐

  1. Android高德地图自定义Markers的例子

    下文为各位重点介绍关于Android高德地图自定义Markers的例子,希望这篇文章能够让各位理解到Android高德地图自定义Markers的方法. 之前的博客里说了地图的嵌入和定位,今天就说说在地 ...

  2. android 高德地图SDK报 KEY鉴权失败

    android 高德地图SDK报 KEY鉴权失败. 一般在项目被转移,或项目使用的SDK被其他项目使用时,会发生这种情况! 解决办法 进入高德地图api控制台 点应用管理-我的应用-创建应用 - 根据 ...

  3. Android 高德地图(带有定位和点击显示经度纬度)

    Android高德地图测试,如下: 1.Android高德地图Demo地址下载:       下载android高德地图Demo 1.2 Android定位SDK 一键下载 1.3 下载好的文件zip ...

  4. Android 高德地图给指定坐标显示图片,以及聚合显示

    官网实例请点击:Android 高德地图聚合官网 下面是一个案例: 效果图: MainActivity public class MainActivity extends AppCompatActiv ...

  5. java实现高德地图app,Android 高德地图入门demo,最新高德地图实现方法,附源码及apk...

    [实例简介] Android 高德地图入门demo,最新高德地图实现方法,附源码及apk [实例截图] [核心代码] GaoDeDemo ├── GaoDeDemo │   ├── app │   │ ...

  6. Android 高德地图自定义线路规划选择方案之后按照方案进行导航

    Android 高德地图自定义线路规划选择方案之后按照方案进行导航 因为我这边导航需求的问题,导致我这边不能使用高德地图官方的线路规划和导航.所以我这边线路规划和导航界面都是根据高德地图那边给的api ...

  7. Android 高德地图中路线规划绘制界面线路

    Android 高德地图中路线规划绘制界面线路 下面代码是根据很多的经纬度的点,绘制出直线的线路.比较死板 /*** 绘制景区的路线*/private void setRouteInfo(List&l ...

  8. Android 高德地图地铁信息查询

    Android 高德地图地铁信息查询 欢迎查看本篇文章 前言 使用 结尾 欢迎查看本篇文章 首先感谢高德技术人员协助帮助我解决疑问,本文需要您花费10分钟左右. 前言 由于想在地图上描绘地铁线突出显示 ...

  9. Android高德地图自定义Mark并实现聚合效果

    Android高德地图自定义Mark并实现聚合效果 起因:公司本来项目里面用到了高德地图,然后最近老板看见别人的APP里面有个聚合的这个功能,老板:"这个效果能不能实现,我也要!" ...

最新文章

  1. 计算程序运行时间(.net1.1 于.net2.0的区别)在.net2.0中提供了Stopwatch类,简单例子...
  2. heartbeat+drbd+mysql构建mysql高可用群集
  3. Android开发--AsyncTask异步任务(二)
  4. TypeScript 3.0 新功能介绍(二)
  5. ubuntu vscode 配置字体_第五章 Ubuntu搭建ESP32开发环境(vscode)
  6. Go语言(二)—基本概述
  7. (图论)51NOD 1264 线段相交
  8. 自动化测试基础篇--Selenium中数据参数化之TXT
  9. 去除桌面图标下的底色[XP系统]
  10. 光学相干断层成像术(OCT)
  11. ModuleNotFoundError: No module named ‘models‘
  12. 游戏策划学习(一)游戏研发基础
  13. “电容触摸按键实验”实例解析
  14. 游戏版Linux :Ubuntu GamePack
  15. Java 兼容 百度 腾讯 高德 经纬度校验距离
  16. 跨越OpenGL和D3D的鸿沟[转]
  17. IOS平台开发实战培训
  18. 关于 promise链式调用与中止
  19. python django实验室药物管理预警系统
  20. 如何获取浏览器的user-agent

热门文章

  1. (原创) EXCEL集成工具箱V8.0 闪亮登场 (EXCEL插件)
  2. 100个问题搞懂Java并发
  3. 安装Android x86
  4. muduo源码学习 Day03
  5. 【gp数据库】查询函数中引用数据表信息
  6. Java集合中的fail-fast快速失败机制
  7. Spring系列第10篇:primary可以解决什么问题?
  8. 中兴通讯项目管理发展历程经验总结
  9. 计算机用户被锁定如何解除,计算机被锁定怎样解除?用户受限又怎样解除?
  10. 国家计算机报名730,730分学霸杨晨煜被清华智班录取!学习的专业是......