通过经纬度查看地图位置的app

总目录:

  • 开发步骤
  • 开发代码

应需求,使用高德地图的sdk开发了一个简易的地图APP,功能很简单,输入经度纬度就可以查看到该位置。

免费获取此应用:https://pan.baidu.com/s/1hWjMN8SwRAcmV6CUaTP4dQ 密码:mfss
注:通过经度纬度查看地图,需要输入准确的经纬度(精确到小数点后六七位),否则你查看到的地图会有很大偏差。

map.png

开发步骤

开发总耗时用了不到一天,主要耗时在使用高德地图官方的sdk。。。
##开发步骤
开发环境:AndroidStudio

代码:

(app路径下的)build.gradle添加依赖
    implementation 'com.amap.api:3dmap:latest.integration'
    implementation 'com.amap.api:location:latest.integration'
在AndroidManifest.xml的application标签中配置Key
  <meta-data android:name="com.amap.api.v2.apikey"
       android:value="你自己的key你自己的key你自己的key">
    </meta-data>
在AndroidManifest.xmlapplication标签中声明service组件
 <service android:name="com.amap.api.location.APSService"></service>
在AndroidManifest.xml中配置权限
    <!--用于进行网络定位-->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
    <!--用于访问GPS定位-->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
    <!--获取运营商信息,用于支持提供运营商信息相关的接口-->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
    <!--用于访问wifi网络信息,wifi信息会用于进行网络定位-->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
    <!--这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
    <!--用于访问网络,网络定位需要上网-->
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <!--用于读取手机当前的状态-->
    <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
    <!--写入扩展存储,向扩展卡写入数据,用于写入缓存定位数据-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
    <!--用于申请调用A-GPS模块-->
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission>
    <!--用于申请获取蓝牙信息进行室内定位-->
    <uses-permission android:name="android.permission.BLUETOOTH"></uses-permission>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"></uses-permission>
主程序代码(布局忽略)
//经度纬度写反了。。。
public class MainActivity extends AppCompatActivity {
    private Button btnFind;
    private EditText edtJingdu;
    private EditText edtWeidu;

    private MapView mapView;
    private AMap aMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initView();

        mapView = (MapView) findViewById(R.id.map);
        mapView.onCreate(savedInstanceState);//必须要写
        init();
    }

    private void initView() {
        btnFind = findViewById(R.id.btn_find);
        edtJingdu = findViewById(R.id.edt_jingdu);
        edtWeidu = findViewById(R.id.edt_weidu);

        btnFind.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String jingdu = edtJingdu.getText().toString();
                String weidu = edtWeidu.getText().toString();

//                aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(34.341568, 108.940174), 18));//显示指定的地点
//                aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(Double.valueOf(jingdu), Double.valueOf(weidu)), 18));//点击按钮跳转到指定的地点
//                LatLng latLng = new LatLng(39.906901,116.397972);//地点经纬度
                
                LatLng latLng = new LatLng(Double.valueOf(jingdu), Double.valueOf(weidu));
                final Marker marker = aMap.addMarker(new MarkerOptions().position(latLng).title("北京").snippet("DefaultMarker"));
                aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 18));

            }
        });
    }

    /**
     * 初始化AMap对象
     */
    private void init() {
        if (aMap == null) {
            aMap = mapView.getMap();
        }
    }

    /**
     * 方法必须重写
     */
    @Override
    protected void onResume() {
        super.onResume();
        mapView.onResume();
    }

    /**
     * 方法必须重写
     */
    @Override
    protected void onPause() {
        super.onPause();
        mapView.onPause();
    }

    /**
     * 方法必须重写
     */
    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        mapView.onSaveInstanceState(outState);
    }

    /**
     * 方法必须重写
     */
    @Override
    protected void onDestroy() {
        super.onDestroy();
        mapView.onDestroy();
    }
}
发布了52 篇原创文章 · 获赞 36 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/easy_purple/article/details/87988835