zoukankan      html  css  js  c++  java
  • Android--Google Map API V2使用

    一、获取API Key

    1、先获取SHA-1 fingerprint

    数字证书是有两种,一种是debug,还有release。前者只能用于测试;后者才可以用于实际产品。

    debug:在命令行中输入命令:keytool -list -v -keystore "C:Usersyour_user_name.androiddebug.keystore" -alias androiddebugkey -storepass android -keypass android

    release:替换签名文件路径;替换密码即可

    SHA-1 fingerprint也可以在Eclipse中获取,如图:

    2、登录网站获取API Key

    网址:https://code.google.com/apis/console/ 用Gmail的账户登录,如果是第一次的话,需要创建项目,默认情况会创建一个叫做API Project的项目。

    点击左边的Services,会在中间看到很多的APIs和Services,找到Google Maps Android API v2,然后把它设置成on,需要接受一些服务条款。

    在左边的导航条中选择API Access。在出来的页面中选择Create New Android Key...就可以生成key了:

    3、创建项目

    AndroidManifest.xml中声明权限

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
    <!-- The following two permissions are not required to use
         Google Maps Android API v2, but are recommended. -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

    声明api key

    <!-- Google Map Key -->
    <meta-data
           android:name="com.google.android.maps.v2.API_KEY"
           android:value="前面申请的key" />
    <meta-data
           android:name="com.google.android.gms.version"
           android:value="4030500" />

    由于google maps v2需要opengl es v2的支持,所以必须在androidmanifest.xml里添加以下元素

    <uses-feature
            android:glEsVersion="0x00020000"
            android:required="true"/>

    导入google-play-services.jar

    加载map要用到SupportMapFragment

    SupportMapFragment fragment = SupportMapFragment.newInstance();
    getSupportFragmentManager().beginTransaction().add(R.id.ll_map, fragment).commit();

    4、添加标记物Marker

    默认的Marker

    private GoogleMap mMap;
    mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
    mMap.addMarker(new MarkerOptions()
            .position(new LatLng(0, 0))
            .title("Hello world"));

    自定义Marker

    private static final LatLng MELBOURNE = new LatLng(-37.81319, 144.96298);
    private Marker melbourne = mMap.addMarker(new MarkerOptions()
                                .position(MELBOURNE)
                                .title("Melbourne")
                                .snippet("Population: 4,137,400")
                                .icon(BitmapDescriptorFactory.fromResource(R.drawable.arrow)));

    自定义Marker时使用了BitmapDescriptorFactory创建一个自定义的Marker图标,在使用BitmapDescriptorFactory之前先看看先看看它的文档,使用这个类的任何方法之前,你必须做下列操作之一,以确保这个类被初始化:1:从MapFragment或者MapView中添加一个GoogleMap,你可以通过调用GoogleMap.getMap()方法,判断返回是否为空。2:调用  MapsInitializer.initialize(Context)方法,只要不抛com.google.android.gms.common.GooglePlayServicesNotAvailableException GooglePlayServicesNotAvailableException这个异常就可以正常起始化。

          还有Marker的点击事件,GoogleMap.setOnMarkerClickListener(); Marker的拖动事件,GoogleMap.setOnMarkerDragListener();(Marker默认是不能拖动的,创建Marker时设置melbourne.setDraggable(true)为可拖动)

          点击 Marker时会默认弹出信息窗口Info Windows,你可以使用InfoWindowAdapter接口,调用GoogleMap.setInfoWindowAdapter()去自定义Info Windows,InfoWindowAdapter要实现两个方法 getInfoWindow(Marker)和getInfoContents(Marker)。api会先调用getInfoWindow(Marker)方法,如果返回null,再继续调用getInfoContents(Marker)方法,如果继续返回null,api将调用默认的info windows。info windows跟marker一样具有点击事件GoogleMap.setOnInfoWindowClickListener()。

  • 相关阅读:
    第10组 Beta冲刺 (4/5)
    第10组 Beta冲刺 (3/5)
    第10组 Beta冲刺 (2/5)
    第10组 beta冲刺(1/5)
    软工实践个人总结
    第01组 每周小结(3/3))
    第01组 每周小结(2/3)
    第01组 每周小结 (1/3)
    第01组 beta冲刺总结
    第01组 beta冲刺(5/5)
  • 原文地址:https://www.cnblogs.com/crane13/p/3714251.html
Copyright © 2011-2022 走看看