GoogleMap的基本使用

1.配置

 1、google map和国内的高德、百度地图不同,由于国内的大环境因素,基本厂商将谷歌服务或者GMS CORE框架阉割掉了,不过搜索教程,也可以将缺少的apk打包安装完毕,在找一个免费的,这样就可以使用google地图了。

 2、google地图没有过多的添加libs和so文件的过程,这点可能是android就是google的嘛,所以添加过程也减少了不少步骤。
 在 android module的build.gradle中依赖
 compile 'com.google.android.gms:play-services-maps:10.2.1'  即可使用google地图了

3、google地图不是使用googleMapView控件方式添加到xml文件中的,而是使用碎片代替。
  "match_parent"
        android:layout_height="match_parent"
        android:id="@+id/map"    
         android:name=
  "com.google.android.gms.maps.SupportMapFragment"/>
4、权限配置
 


5、获取密钥和mainfest
    1.获取密钥:
    详细步骤请浏览网址:
    [google map 获取密钥URL:](https://developers.google.com/maps/documentation/android-api/signup)

    2.AndroidManifest.xml
    

6、在java文件中获取GoogleMap

在onCreate()中使用
((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.google_map)).getMapAsync(this);

getMapAsync(this)的方法实现接口
OnMapReadyCallback

接口需实现方法
@Override
public void onMapReady(GoogleMap googleMap) {
    //googleMap即为得到的googleMap
}   

2.GoogleMap的基本使用

2.1 简单marker的添加

 LatLng hangzhou = new LatLng(30.274136, 120.154060);
//添加marker
    googleMap.addMarker(new MarkerOptions().position(sydney)
            .title("Marker in Hangzhou"));

  //地图自动移动至当前点  googleMap.moveCamera(CameraUpdateFactory.newLatLng(hangzhou ));

  //如果想直接放大移动到当前点可以使用
  CameraUpdateFactory.newLatLngZoom(LatLng latLng,int zoom);

2.2 googleMap提供了更为简单的点击屏幕获取当前地图坐标的方法

//点击
GoogleMap.setOnMapClickListener(GoogleMap.OnMapClickListener listener);
//长按
GoogleMap.setOnMapLongClickListener(GoogleMap.OnMapClickListener listener);

两种方法都可获取当前点击的LatLng
onMapClick(LatLng latLng)
onMapLongClick(LatLng latLng)

2.3更改地图显示Type

google提供了5种type类型:
Normal
典型道路地图。 显示道路、人类建造的一些特征以及河流等重要的自然特征。 此外,还会显示道路 和景观标签。
Hybrid
添加了道路地图的卫星照片数据。 此外,还会显示道路 和景观标签。
Satellite
卫星照片数据。 不显示道路和景观标签。
Terrain
地形数据。 地图包含颜色、轮廓线和标签以及 透视阴影。 此外,还会显示一些道路和标签。
None
无图块。 地图将渲染为空网格,不加载任何图块。

使用GoogleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
的方法在进行更改地图显示样式

2.4获取商家景点信息

googleMap提供了
googleMap.setOnPoiClickListener(new OnPoiClickListener(){
    public void onPoiClick(PointOfInterest poi) {
    Toast.makeText(getApplicationContext(), "Clicked: " +
                    poi.name + "\nPlace ID:" + poi.placeId +
                    "\nLatitude:" + poi.latLng.latitude +
                    " Longitude:" + poi.latLng.longitude,
            Toast.LENGTH_SHORT).show();
}
});

2.5设置多边形、圆形等

1、多线段:
PolylineOptions rectOptions = new PolylineOptions()
    .add(new LatLng(37.35, -122.0))
    .add(new LatLng(37.45, -122.0))  // North of the previous point, but at the same longitude
    .add(new LatLng(37.45, -122.2))  // Same latitude, and 30km to the west
    .add(new LatLng(37.35, -122.2))  // Same longitude, and 16km to the south
    .add(new LatLng(37.35, -122.0)); // Closes the polyline.
Polyline polyline = myMap.addPolyline(rectOptions);

2、多边形:
PolygonOptions rectOptions = new PolygonOptions()
          .add(new LatLng(37.35, -122.0),
               new LatLng(37.45, -122.0),
               new LatLng(37.45, -122.2),
               new LatLng(37.35, -122.2),
               new LatLng(37.35, -122.0));
Polygon polygon = myMap.addPolygon(rectOptions);

3、自动完成多边形
Polygon polygon = map.addPolygon(new PolygonOptions()
    .add(new LatLng(0, 0), new LatLng(0, 5), new LatLng(3, 5), new LatLng(0, 0))
    .strokeColor(Color.RED)
    .fillColor(Color.BLUE));

4、圆形
CircleOptions circleOptions = new CircleOptions()
.center(new LatLng(37.4, -122.1))
.radius(1000)); // In meters

Circle circle = myMap.addCircle(circleOptions);

你可能感兴趣的:(android)