1. 程式人生 > >Android Google Map學習四(地圖元件的新增)

Android Google Map學習四(地圖元件的新增)

  嚮應用中新增Google Map元件有兩種基本的方式,一種是利用MapFragment(Fragment的子類,內部整合GoogleMap);另一種是用MapView(View的子類,內部整合GoogleMap)。

一、MapFragment

  嚮應用中新增MapFragment是最簡便的新增方式。
  根據fragment的新增方式,一種是利用佈局檔案靜態新增,另外就是利用java程式碼動態新增。
  
1.靜態新增
  在layout檔案中新增fragment佈局,並指明name屬性為com.google.android.gms.maps.MapFragment,這樣系統會自動將MapFragment附加上去:
  

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    android:name="com.google.android.gms.maps.MapFragment"
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

2.動態新增
  建立一個MapFragment物件,並利用FragmentTransaction動態新增到指定的容器中:
  

 mMapFragment = MapFragment.newInstance();
 FragmentTransaction fragmentTransaction =
         getFragmentManager().beginTransaction();
 fragmentTransaction.add(R.id.my_container, mMapFragment);
 fragmentTransaction.commit();

  添加了地圖元件後,需要初始化地圖,並設定監聽介面:mapFragment.getMapAsync(this);public void getMapAsync (OnMapReadyCallback callback),其中的callback需要實現OnMapReady的介面,表明當地圖準備好使用時該進行的動作。

二、MapView

  MapView是View的子類,只需要在佈局檔案中引用com.google.android.gms.maps.MapView定義一個MapView,然後在Activity初始化MapView,與普通的TextView等元件用法類似。
  

    //layout檔案中的定義
    <com.google.android.gms.maps.MapView
        android:id="@+id/mymap"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

    //Activity中的初始化
    myMap = (MapView)findViewById(R.id.mymap);
    myMap.getMapAsync(this);//getMapAsync這個與MapFragment相同

  需要特別注意的是,MapView中生命週期的方法必須與Activity生命週期的方法同步,即必須在Activity中的生命週期中呼叫MapView的生命週期函式。

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ```````//其他的一些初始化
        myMap.onCreate(savedInstanceState);
    }

    @Override
    protected void onResume() {
        super.onResume();
        myMap.onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
        myMap.onPause();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        myMap.onDestroy();
    }

    @Override
    public void onLowMemory() {
        super.onLowMemory();
        myMap.onLowMemory();
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        myMap.onSaveInstanceState(outState);
    }

三、元件的初始化

  當需要初始化Map的一些狀態時,可以在xml屬性中設定,也可以在java程式碼中設定。
  

1.xml屬性初始化
  
  在fragment或者MapView的xml佈局中,都可以新增一些屬性來初始化Map的狀態。

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:map="http://schemas.android.com/apk/res-auto"
  android:name="com.google.android.gms.maps.SupportMapFragment"
  android:id="@+id/map"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  map:cameraBearing="112.5"
  map:cameraTargetLat="-33.796923"
  map:cameraTargetLng="150.922433"
  map:cameraTilt="30"
  map:cameraZoom="13"
  map:mapType="normal"
  map:uiCompass="false"
  map:uiRotateGestures="true"
  map:uiScrollGestures="false"
  map:uiTiltGestures="true"
  map:uiZoomControls="false"
  map:uiZoomGestures="true"/>

2.程式程式碼初始化

GoogleMapOptions options = new GoogleMapOptions();
options.mapType(GoogleMap.MAP_TYPE_SATELLITE)
    .compassEnabled(false)
    .rotateGesturesEnabled(false)
    .tiltGesturesEnabled(false);
//在例項化一個MapFragment物件時
MapFragment.newInstance(GoogleMapOptions options);
//或者MapView的建構函式中
MapView(Context, GoogleMapOptions)

相關推薦

Android Google Map學習地圖元件新增

  嚮應用中新增Google Map元件有兩種基本的方式,一種是利用MapFragment(Fragment的子類,內部整合GoogleMap);另一種是用MapView(View的子類,內部整合GoogleMap)。 一、MapFragment   嚮

Tensorflow:實戰Google深度學習框架高清版PDF

Tensorflow:實戰Google深度學習框架(高清版)PDF百度網盤連結:https://pan.baidu.com/s/1GrKn451PECK0wupXcQDZ3g 提取碼:tw9k 複製這段內容後開啟百度網盤手機App,操作更方便哦哦內容簡介 · · · · · · TensorFlow是谷歌20

《TensorFlow:實戰Google深度學習框架第2版》高清中文版PDF下載

《TensorFlow:實戰Google深度學習框架(第2版)》高清中文版PDF下載 領域旗艦重磅升級 新老谷歌專家聯袂 首度全面支援1.4.x程式碼 大量增補新版獨有核心功能 下載地址:https://pan.baidu.com/s/1uijUhufBV6nXNgz-VxZUGQ備用地址:https:/

2018年Android面試題彙總持續更新中

面試系列,推薦先讀我的心得:十二、ThreadLocal12.1、四大方法:set、get、remove和initialValue。   1、initialValue在第一次呼叫get或set時執行,只執行一次,初始化內部類Values中Oject陣列。   2、JDK5.0

《TensorFlow實戰Google深度學習框架2017.3第一版學習筆記

書本3.1.2計算圖的使用中的第41頁,例項中 v = tf.get_variable( 'v', initializer = tf.zeros_initializer(shape = [1])) 報錯 原因在於新版的tensorflow將語法改為 v

Android學習路線二十一運用Fragment構建動態UI——創建一個Fragment

動態 app idt 文檔 部分 roi 現實 調用 android學習 你能夠把fragment看成是activity的模塊化部分。它擁有自己的生命周期,接受它自己的輸入事件,你能夠在activity執行時加入或者刪除它(有點像是一個“子activity”。你

Google Map Api 谷歌地圖接口整理

服務器 依次 wheel gets 並且 ast utf 整理 實例化 一:基本知識: 1. 使用谷歌地圖 API 的第一步就是要註冊一個 API 密鑰,需要註重一下兩點: 1.假如使用 API 的頁面還沒有發布,只是在本地調試,可以不用密鑰,隨便用個字符串代替就

JS學習BOM DOM

常用方法 p地址 eight 輸入 inter ash 一次 earch cti     BOM Screen對象 console.log(window.width);//屏幕寬度 console.log(window.hei

JMS學習ActiveMQ消息過濾

eat exp receiver 同步 默認 on() prop nal runt 消息的過期、消息的選擇器和消息的優先級。 一、消息的過期 允許消息過期 。默認情況下,消息永不會過期。如果消息在特定周期內失去意義,那麽可以設置過期時間。 有兩種方法設置消息的過期時間,時間

Android Camera fw學習()-recording流程分析

應用開發 facet internal server 中一 sca med erase 流程分析 Android Camera fw學習(四)-recording流程分析 備註:備註:本文是Android5.1學習筆記。博文按照軟件啟動流程分析。   且行且惜,一步一個腳印

JAVA學習筆記併發程式設計 - 柒- J.U.C元件2

J.U.C-FutureTask 在Java中一般通過繼承Thread類或者實現Runnable介面這兩種方式來建立執行緒,但是這兩種方式都有個缺陷,就是不能在執行完成後獲取執行的結果,因此Java 1.5之後提供了Callable和Future介面,通過它們就可以在任務執行完畢之後得到

JAVA學習筆記併發程式設計 - 陸- J.U.C之AQS及其相關元件詳解

文章目錄 J.U.C之AQS-介紹 關於AQS裡的state狀態: 關於自定義資源共享方式: 關於同步器設計: 如何使用: 具體實現的思路: 設計思想: 基於AQS的同步元件: AQS小結:

Lua菜鳥教程學習筆記重難點 續

內容會持續更新,有錯誤的地方歡迎指正,謝謝! Lua 檔案 I/O Lua I/O 庫用於讀取和處理檔案。分為簡單模式(和C一樣)、完全模式(以一種面對物件的形式,將所有的檔案操作定義為檔案控制代碼的方法)。如果同時讀取多個檔案的話,使用完全模式則較為合適。 簡單模式 以

Pro Android學習筆記一五五 感測器5 磁場感測器和方位

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

spring學習總結——裝配Bean學習匯入和混合配置

情景:在典型的Spring應用中,我們可能會同時使用自動化和顯式配置(JavaConfig)或者XML配置,幸好在Spring中,這些配置方案都不是互斥的。你儘可以將JavaConfig的元件掃描和自動裝配和/或XML配置混合在一起。   關於混合配置,第一件需要了解的事情就是在自動裝配時,它並不在意要裝配

spring學習總結——高階裝配學習執行時:值注入

  前言:   當討論依賴注入的時候,我們通常所討論的是將一個bean引用注入到另一個bean的屬性或構造器引數中。bean裝配的另外一個方面指的是將一個值注入到bean的屬性或者構造器引數中。在沒有學習使用怎麼注入外部值時,我們正常是直接將值寫死在程式碼中。如將專輯的名字裝配到BlankDis

android google map v2新的定位方法

package com.diecolor; import android.content.Context; import android.location.Location; import android.location.LocationListener; import a

機器學習筆記二十二:TensorFlow實戰十影象風格遷移

1 - 引言 相信大家都使用過一種濾鏡,可以把一張照片轉換成不同風格的照片,如下圖所示: 那麼我們就來利用TensorFlow來實現以下這個演算法,這個演算法出自Gatys的A Neural Algorithm of Artistic Style論文,十分有趣,讓我們來詳細的介紹一下這

【強化學習】python 實現 q-learning 例例二改寫

陷阱 data img 入口 turn pda state save isod 將例二改寫成面向對象模式,並加了環境! 不過更新環境的過程中,用到了清屏命令,play()的時候,會有點問題。learn()的時候可以勉強看到:P 0.效果圖 1.完整代碼 相對於例一,

Android學習筆記第一行程式碼 做一個簡單的登入介面

一.建立xml檔案 1.賬戶輸入框和密碼輸入框的編寫 <TextView android:layout_height="wrap_content" android:text="@string/LG_name" />