Map地圖元件

地圖元件是一個二維的容器,用來編譯背景中的地圖片(map tiles),並且允許多個標記元素辨識地圖上的點。而背景中的地圖片是由OpenStreetMap的貢獻者,以及美國地質調查局(the United States Geological Survey)支援。

地圖元件提供三種實用的程序,在App Inventor內操縱其邊界。第一,一種鎖定機制,相對於螢幕上其它元件,允許地圖被移動。第二,當未鎖定時,使用者可以將地圖平移至任何位置。在這個新的位置,可以按下「設定初始邊界」按鈕,以儲存目前地圖的座標至其屬性。第三,如果地圖被移動至一個不同的位置,例如在螢幕外添加標記,那麼可以使用「重置地圖至初始邊界」按鈕,使地圖重置於開始的位置。

屬性

BoundingBox
為地圖的繪製視圖,設定或取得目前的邊界。數值是串列中的一個串列,包含了地圖的目前視圖的西北和東南的座標,以((北 西)(南 東))的形式呈現。

CenterFromString
從一個給予的「緯度,經度」字串,設定地圖的中心。這項屬性主要被設計者用來設定地圖的中心。也請參考 「PanTo」方法,這個方法是用來動態呈現地圖中心的改變。

EnablePan
啟用或停用使用者移動地圖的能力。

EnableRotation
啟用或停用二指旋轉地圖的手勢。


EnableZoom
啟用或停用二指捏的手勢。這個手勢是用來縮放地圖。
Features
設定或取得呈現在地圖上的功能的串列。如果將此屬性設定為一個空串列,將會清空整個地圖。

Height
設定或取得地圖的高度。

HeightPercent
依螢幕的某一個百分比設定地圖的高度。

Latitude
取得地圖中心的緯度。若想改變緯度,請使用「PanTo」方法。

LocationSensor
使用提供的位置感測器以感測使用者位置資料,而非內建的位置提供器。
Longitude
取得地圖中心的經度。如果想要改變經度,請使用「PanTo」方法。
MapType
設定或取得用來繪製地圖背景的地圖片圖層。預設的圖層是道路圖層。有效的數值是:1(道路圖層),2(空照圖層),3(地形圖層)。道路圖層由OpenStreetMap提供,而空照圖層與地形圖層由美國地質調查局提供。
ShowCompass
顯示或隱藏覆蓋在地圖上的羅盤。若數位羅盤是呈現在硬體上,羅盤將會根據裝置的方向而旋轉。
ShowUser
顯示或隱藏指出使用者目前在地圖上位置的圖標。這項功能的可用性和準確性,會根據使用者是否已啟動位置服務,以及可使用哪一個位置提供器,而有所不同。
ShowZoom
顯示或隱藏Android原生縮放按鈕,以允許使用者縮或放地圖。這項屬性可用來代替二指縮放手勢。
UserLatitude
如果ShowUser屬性被啟用,則回覆使用者的緯度。
UserLongitude
如果ShowUser屬性被啟用,則回覆使用者的經度。
Visible
設定地圖是否可以被看見。
Width
設定或取得地圖的寬度。
WidthPercent
依螢幕的某一個百分比,設定地圖的寬度。
ZoomLevel
取得或設定地圖縮放的等級。有效的數值範圍是從1至20。但並不是所有的地圖片圖層,在其上的每一個位置都會支援每一個縮放等級。例如,在海洋中間或南北極,詳細的空拍圖就可能無法支援。最高的縮放等級將有可能產生在大城市中心,因為大城市中心可獲得的詳細的地圖資料量比較多。

事件

BoundsChange
當使用者改變地圖的邊界,不論是縮放、平移或旋轉,此事件就會執行。

DoubleTapAtPoint(number latitude, number longitude)
當使用者雙擊地圖上的某一點,事件就會執行。緯度與經度指出雙擊事件位置在地圖上的座標。這個事件或許會接續一個「ZoomChange」事件,如果縮放的手勢被啟用,並且地圖並不是處於可能的最高縮放等級。
FeatureClick(component feature)
當某一項功能被點擊了,母地圖也將會收到一個「FeatureClick」事件。「feature」參數指出那一項子功能被點擊了。
FeatureDrag(component feature)
當一項功能被拖曳,母地圖也將會收到一項「FeatureDrag」事件。「feature」參數指出那一項子功能被拖曳了。
FeatureLongClick(component feature)
當一項功能被長點擊,母地圖也將會收到一項「FeatureLongClick」事件。「feature」參數指出那一項子功能被長按住了。
FeatureStartDrag(component feature)
當使用者開始拖曳一項功能,母地圖也將收到一項「FeatureStartDrag」事件。「feature」參數指出哪一項子功能被拖曳。
FeatureStopDrag(component feature)
當使用者停止拖曳一項功能,母地圖也將收到一項「FeatureStopDrag」事件。「feature」參數指出哪一項子功能被拖曳。
GotFeatures(text url, list features)
當「LoadFromURL」方法被呼叫,從url成功讀取功能的描述,「GotFeatures」事件就會開始執行。「feature」參數將會是一個功能描述的串列,可以被轉換成使用「FeatureFromDescription」方法的元件。
InvalidPoint(text message)
當程式在處理地理資料時,若遇上無效點,此事件就會執行。何謂「無效點」?是指此點的緯度或經度在可接受的範圍之外(緯度[-90,90]和經度[-180,180])。「message」參數將包含關於這項錯誤的解釋。
LoadError(text url, number responseCode, text errorMessage)
當在一個給予的url處理一份功能收集文件(feature collection document)產生了錯誤,此項事件就會執行。「responseCode」參數將包含一份HTTP狀態碼,而「errorMessage」參數將包含一份詳細的錯誤訊息。
LongPressAtPoint(number latitude, number longitude)
當使用者在地圖上長按壓某一個點,此項事件就會執行。緯度和經度指出長按壓位置在地圖上的座標。注意,若「EnablePan」屬性為真,那麼此項事件就不會產生,而是產生一項平移事件。
Ready
當地圖已經初始化,並且準備好被使用,這項事件就會執行。
TapAtPoint(number latitude, number longitude)
當使用者敲擊地圖上的某一點,此事件就會執行。使用者敲擊的點將透過緯度和經度的參數,被回報為地圖上的座標。
ZoomChange
當使用者改變縮放的等級,例如透過一個二指捏的手勢或雙擊,此事件就會執行。

方法

CreateMarker(number latitude, number longitude)
根據給予的緯度與經度,在地圖上產生一個新的標記。這個標記可以透過使用「any component」程式塊,進行操縱。
FeatureFromDescription(list description)

根據所提供的描述,回覆一個新的元件。如果在屬性中有一項錯誤,例如,錯誤格式的資料,那麼這個方法將會回覆描述這項錯誤的文字。使用「is-text?」程式塊,來測試是否你獲得一個錯誤。請使用下列首個字母由小寫轉成大寫的資料映對,將地圖功能屬性轉換為App Inventor的屬性。
    • description → Description
    • draggable → Draggable
    • infobox → EnableInfobox
    • fill → FillColor
    • image → ImageAsset
    • stroke → StrokeColor
    • stroke-width → StrokeWidth
    • title → Title
    • visible → Visible
LoadFromURL(text url)
當從一個URL(包括檔案的URL)加載一項功能的集合,就會呼叫此項方法。如果此項事件成功執行,那麼「功能描述」將以串列的形式,傳遞給「GotFeatures」事件。如果此項事件執行失敗,「LoadError」事件將被執行。在這個時刻,GeoJSON將會是唯一被支援的格式。
PanTo(number latitude, number longitude, number zoom)
平移地圖的中心至所給予的(緯度 經度),並且縮放至所給予的縮放等級。這個過程是以動態呈現。
Save(text path)
儲存地圖內容的描述至所給予的路徑。截至目前為止,這個方法只會儲存使用GeoJSON格式的功能。