android google map 入门 四

来源:互联网 发布:淘宝卖情趣内衣怎么样 编辑:程序博客网 时间:2024/05/21 04:23

获取地图中心点经纬度

为什么需要获取地图中心点经纬度呢,我们有时候移动地图,需要在移动后,获取到地图中点的经纬度
例如googl地图获取高德地图的导航功能,他们可以在地图选点,然而他们一直在滑动地图,然后为什能获取到地图的中心点呢

我们可以这样来做:
1. 在地图的中心放置一个图标(一个ico),我们一般放位置图标,例如下面的fragmen是一个地图,我们在地图的中间放置一个图标(图钉),imageView

<RelativeLayout    android:layout_height="match_parent"    android:layout_width="match_parent"    android:layout_marginBottom="150dp">    <fragment xmlns:android="http://schemas.android.com/apk/res/android"        xmlns:tools="http://schemas.android.com/tools"        android:id="@+id/map"        android:name="com.google.android.gms.maps.SupportMapFragment"        android:layout_width="match_parent"        android:layout_height="match_parent"        tools:context="com.gmapdemo2.googlemapdemosimple.MapsActivity"        android:layout_alignParentLeft="true"        android:layout_alignParentStart="true" >        </fragment>    <ImageView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerHorizontal="true"        android:layout_centerInParent="true"        android:layout_centerVertical="true"        android:src="@mipmap/centermark"/></RelativeLayout>
  1. 地图中去获取地图中心的经纬度方法, 获取地图中心经纬度方法
LatLng center = googleMap.getCameraPosition().target;

但是我们在加载地图的时候,就要获取到地图中心的经纬度
我们可以这样

//开启摄像头变化事件,得到地图中间的经纬度        mMyMap.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback(){            @Override            public void onMapLoaded() {                LatLng center = mMyMap.getCameraPosition().target;                mNewLatLng =center;            }        });

但是我们有时候想移动地图后也能获取到地图的经纬度,我们需要用下面的方法,地图移动完成后的事件

        mMyMap.setOnCameraIdleListener(new GoogleMap.OnCameraIdleListener() {            @Override            public void onCameraIdle() {                //得到地图正中心的经纬度                LatLng center = mMyMap.getCameraPosition().target;                mNewLatLng =center;            }        });

这样,我们移动地图,但是地图中心的图钉一直处于地图的中心位置,也能获取地图中心的经纬度

根据经纬度获取地址信息

有时候,我们需要根据用户所在经纬度,确定用户在哪个地方,例如40,114 在北京

在google提供了一个方法是用来反向解析经纬度的, 注意,如果这个经纬度很偏远,比如在太平洋的某个区域,googl会解析不到,会catch到空指针异常,如果不能连接代理,或者查询超时,也会查询不到,会报IOException功能,所以建议下面这段代码放在一个异步方法中,否则会阻碍主线程

List<Address> addresses;Geocoder geocoder;private String city="";private String state="";private String country="";private String postalCode="";private String knownName="";private String historyName="";addresses = geocoder.getFromLocation(latlng.latitude, latlng.longitude, 1);try {if(addresses.get(0).getLocality()!=null){                city = addresses.get(0).getLocality();            }            if(addresses.get(0).getAdminArea()!=null){                state = addresses.get(0).getAdminArea();            }            if(addresses.get(0).getCountryName()!=null){                country = addresses.get(0).getCountryName();            }            if(addresses.get(0).getPostalCode()!=null){                postalCode = addresses.get(0).getPostalCode();            }            if(addresses.get(0).getFeatureName()!=null){                knownName = addresses.get(0).getFeatureName();            }}catch (Exception e) {            Log.i("Get Address","no address getINSTANCE");            e.printStackTrace();            return "";        }
0 0
原创粉丝点击