2016年10月15日 星期六

Google Map sample

Ref :  https://developer.android.com/training/maps/index.html

Adding Maps

Allow your users to explore the world with rich maps provided by Google. Identify locations with custom markers, augment the map data with image overlays, embed one or more maps as fragments, and much more.
The Google Maps Android API allows you to include maps and customized mapping information in your app.

Key Developer Features


Add maps to your app

With Google Maps Android API v2, you can embed maps into an activity as a fragment with a simple XML snippet. The new Maps offer exciting features such as 3D maps; indoor, satellite, terrain, and hybrid maps; vector-based tiles for efficient caching and drawing; animated transitions; and much more.Add a map object.

Customize the map

Add markers onto the map to indicate special points of interest for your users. You can define custom colors or icons for your map markers to match your app's look and feel. To further enhance the app, draw polylines and polygons to indicate paths or regions, or provide complete image overlays.Draw markers.

Control the user's view

Give your users a different view of the world with the ability to control the rotation, tilt, zoom, and pan properties of the "camera" perspective of the map.Change the view.

Add Street View to your app

Embed Street View into an activity and let your users explore the world through panoramic 360-degree views. Programmatically control the zoom and orientation (tilt and bearing) of the Street View camera, and animate the camera movements over a given duration. Add Street View.

Get Started


Google Maps Android API is part of the Google Play services platform. To use Google Maps, set up the Google Play services SDK in your app development project. For more information, see the Getting Started guide for the Google Maps Android API.



步驟 4.取得 Google Maps API 金鑰

您的應用程式需要 API 金鑰才能存取「Google 地圖」伺服器。 您需要的金鑰類型是 Key for Android applications。金鑰是免費提供。 您可以搭配呼叫 Google Maps Android API 的應用程式使用它,而且支援的使用者數目沒有限制。
選擇下列其中一種方式來取得 API 金鑰:
  • 最快速、簡單的方式:使用 Android Studio 為您建立的 google_maps_api.xml 檔案中提供的連結:
    1. 複製 google_maps_api.xml 檔案中提供的連結,然後在您的瀏覽器中貼上。該連結會帶您前往 Google Developers Console,並透過 URL 參數提供資訊,進而減少需要您手動輸入的次數。
    2. 依照指示在控制台上建立新的專案,或選取現有的專案。
    3. 為您的控制台專案建立 Android API 金鑰。
    4. 複製產生的 API 金鑰,返回 Android Studio,然後將 API 金鑰複製到 google_maps_api.xml 檔案中的 <string> 元素。

步驟 5.Hello Map!看看這段程式碼

檢查範本提供的程式碼。 尤其是請查看您 Android Studio 專案中的下列檔案:

XML 版面配置檔案

根據預設,定義應用程式版面配置的 XML 檔案位於 res/layout/activity_maps.xml。 它包含下列程式碼:
<fragment xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:id="@+id/map"     tools:context=".MapsActivity"     android:name="com.google.android.gms.maps.SupportMapFragment" />

地圖活動 Java 檔案

根據預設,定義地圖活動的 Java 檔案稱為 MapsActivity.java。 它應該在您的套件名稱後面包含下列程式碼:
import android.os.Bundle; import android.support.v4.app.FragmentActivity; import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.OnMapReadyCallback; import com.google.android.gms.maps.SupportMapFragment; import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.MarkerOptions; public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_maps);         SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()                 .findFragmentById(R.id.map);         mapFragment.getMapAsync(this);     }     @Override     public void onMapReady(GoogleMap map) {         // Add a marker in Sydney, Australia, and move the camera.         LatLng sydney = new LatLng(-34, 151);         map.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));         map.moveCamera(CameraUpdateFactory.newLatLng(sydney));     } }
如果您的地圖活動檔案不包含上述程式碼,請在您的套件名稱後面,以上述程式碼取代該檔案的內容。

步驟 6.連接 Android 裝置

查看應用程式運作情況最簡單的方法是,將 Android 裝置連接到您的電腦。 依照指示啟用 Android 裝置上的開發人員選項,然後設定您的應用程式與系統,以偵測該裝置。
或者,您也可以使用 Android 模擬器來執行您的應用程式。 使用 Android Virtual Device (AVD) Manager 設定一或多個虛擬裝置,以便在建置和執行您的應用程式時與 Android 模擬器搭配使用。您需要具有 Google API 平台 (以 Android 4.2.2 或更高版本為基礎) 的模擬器映像。請記下設定虛擬機器加速的指示,您應該如指示中所述,與 x86 目標 AVD 搭配使用。這將可改善使用模擬器時的體驗。

步驟 7.建置並執行您的應用程式

在 Android Studio 中,按一下 [Run] 選單選項 (或執行按鈕圖示) 以執行您的應用程式。
提示您選擇裝置時,選擇下列其中一個選項:
  • 選取與您的電腦連接的 Android 裝置。
  • 或者,選取 [Launch emulator] 選項按鈕,然後選擇您先前設定的虛擬裝置。
按一下 [OK]。 Android Studio 將會呼叫 Gradle 來建置您的應用程式,然後在裝置或模擬器上顯示結果。需要數分鐘才會開啟應用程式。
您應該能看見有個標記放在澳洲雪梨的地圖。 如果您沒看到地圖,請確定您已完成此頁面所述的所有步驟。特別是要檢查您已如上所述新增 API 金鑰。

後續步驟

您或許想要查看一些範例程式碼
您可以閱讀開發人員指南中地圖物件的詳細資訊。


然後會遇到編譯的問題...看起來空間記憶體不夠




在 gradle.properites

加入這一行

org.gradle.jvmargs=-Xmx2048m


還有一個bug 是不能超過64K 的limit

Ref :  https://developer.android.com/studio/build/multidex.html


Modify the module-level build.gradle file configuration to include the support library and enable multidex output, as shown in the following code snippet:
android {
    compileSdkVersion 21
    buildToolsVersion "21.1.0"

    defaultConfig {
        ...
        minSdkVersion 14
        targetSdkVersion 21
        ...

        // Enabling multidex support.
        multiDexEnabled true
    }
    ...
}

dependencies {
  compile 'com.android.support:multidex:1.0.0'
}


I have fixed: Removed
compile 'com.google.android.gms:play-services:9.4.0'
and Used
compile 'com.google.android.gms:play-services-maps:9.4.0'
compile 'com.google.android.gms:play-services-location:9.4.0'












沒有留言:

張貼留言