顯示具有 Google Map 標籤的文章。 顯示所有文章
顯示具有 Google Map 標籤的文章。 顯示所有文章

2016年1月25日 星期一

Close Google Map toolbar

Reference:
https://developers.google.com/maps/documentation/android-api/controls#toolbar

Code sinppet:
mMap.getUiSettings().setMapToolbarEnabled(false);

2015年12月8日 星期二

Get boundary coordinates of visible region on Google Map

Reference:

http://stackoverflow.com/questions/14700498/android-google-maps-get-boundary-co-ordinates

Code snippet:

LatLngBounds curScreen = googleMap.getProjection().getVisibleRegion().latLngBounds;

2015年11月11日 星期三

Check if Google Play Service is available

Reference:

http://stackoverflow.com/questions/18737632/how-to-check-google-play-services-version
http://stackoverflow.com/questions/28479849/when-does-isgoogleplayservicesavailable-return-service-version-update-required
http://stackoverflow.com/questions/25989727/isgoogleplayservicesavailable-always-returns-2
http://www.4byte.cn/question/135275/googlemap-v2-crash-if-first-use-android.html

Code snippet:

public static void checkGooglePlayServiceAvailability(Activity activity){
        Log.d(TAG,"sdk gms versionCode: " + GooglePlayServicesUtil.GOOGLE_PLAY_SERVICES_VERSION_CODE);
        try{
            int deviceGmsVersion = activity.getPackageManager().getPackageInfo("com.google.android.gms",0).versionCode;
            Log.d(TAG,"" + "device gms versionCode: " + deviceGmsVersion);
        } catch(Exception e){
            e.printStackTrace();
        }

        int statusCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(activity);
        Log.e(TAG,"statuscode: " + statusCode);
        Log.e(TAG,"error string: " + GooglePlayServicesUtil.getErrorString(statusCode));

        if(statusCode != ConnectionResult.SUCCESS){
            if(GooglePlayServicesUtil.isUserRecoverableError(statusCode)){
                Dialog errorDialog = GooglePlayServicesUtil.getErrorDialog(statusCode, activity, 0);
                // If Google Play services can provide an error dialog
                if (errorDialog != null) {
                    errorDialog.show();
                }
            }
        }
    }

2015年10月15日 星期四

如何在 App 畫面上顯示 Google map

Reference:

https://developers.google.com/maps/documentation/android-api/map#indoor_maps
https://developer.android.com/guide/topics/location/index.html

Illustration:

按照“取得 Google map的 API key”一文,取得了 Google Map API key之後,之後在下列檔案新增紅字的部分,就可以在你的 app裡面顯示 Google map了

1. AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="your_package_name" >

<permission android:name="your_package_name.permission.MAPS_RECEIVE" android:protectionLevel="signature"/>
    <uses-permission android:name="your_package_name.permission.MAPS_RECEIVE"/>
    <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 ACCESS_COARSE/FINE_LOCATION 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" />

<application
        android:allowBackup="true"
        ...... >
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="6587000" />
        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="@string/google_maps_key" />

        .......
    </application>
    <!--
              如果使用OpenGL ES version 2來顯示
              避免 Google Play Store 認為我們的 App 不支援 OpenGL ES version 2
    -->
    <uses-feature android:glEsVersion="0x00020000" android:required="true" />
</manifest>

2. res/values/google_maps_key.xml

<resources>
......
    <string name="google_maps_key" translatable="false" templateMergeStrategy="preserve">
        YOUR_KEY_HERE
    </string>
</resources>

取得 Google map的 API key

Reference:

http://developer.android.com/tools/publishing/app-signing.html
https://developers.google.com/maps/documentation/android-api/signup
http://wazai.net/1916/%E7%B0%BD%E7%BD%B2%E4%BD%A0%E7%9A%84android%E6%87%89%E7%94%A8%E7%A8%8B%E5%BC%8F-keystore

Step:

1. 打開命令提示字元視窗,輸入下列的指令:
keytool -genkey -v -keystore yourkeyname.keystore -alias yourkeyname -keyalg RSA -keysize 2048 -validity 10000

Note:
如果這邊出現「keytool: command not found」,請把$JAVA_HOME\bin加入環境變數$PATH中,或是直接到$JAVA_HOME\bin\目錄下執行 keytool,例如 $JAVA_HOME\bin是 C:\Program Files\Java\jdk1.7.0_02\bin,就先cd C:\Program Files\Java\jdk1.7.0_02\bin之後開始輸入上面的指令。
將上述指令 -keystore yourkeyname.keystore以及 -alias yourkeyname中的 yourkeyname改成自己要的名字,其他東西照著貼上就好,-validity官方說明文件建議設定10000以上的值
Ex: 
keytool -genkey -v -keystore jasonrelease.keystore -alias jasonrelease -keyalg RSA -keysize 2048 -validity 10000
2. 將產生的 yourkeyname.keystore移到 $JAVA_HOME\bin\目錄下
3. 在命令提示字元視窗輸入下列指令
keytool -list -v -keystore jasonrelease.keystore

android debug key:
keytool -list -v -keystore debug.keystore
password:android
4. 將 SHA1編碼複製起來,等一下在 Google API Console網頁會使用到
5. 利用 Google搜尋 Google API Console,找到Google API註冊網站
https://console.developers.google.com/
6.  API -> Google Maps Android API -> 啟用
7. 憑證 -> 新增憑證 -> API金鑰 -> 「Android」金鑰
8. 新增「套件名稱和指紋」
9. 輸入開發的 app的套件名稱和剛剛複製起來的 SHA1編碼,點擊建立按鈕後完成