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()。

  • 相关阅读:
    Running ASP.NET Applications in Debian and Ubuntu using XSP and Mono
    .net extjs 封装
    ext direct spring
    install ubuntu tweak on ubuntu lts 10.04,this software is created by zhouding
    redis cookbook
    aptana eclipse plugin install on sts
    ubuntu open folderpath on terminal
    ubuntu install pae for the 32bit system 4g limited issue
    EXT Designer 正式版延长使用脚本
    用 Vagrant 快速建立開發環境
  • 原文地址:https://www.cnblogs.com/crane13/p/3714251.html
Copyright © 2011-2022 走看看