1. 程式人生 > >高德地圖api之自定義載入地圖

高德地圖api之自定義載入地圖

高德地圖api有幾大功能模組:Amap,Location,Search,OfflineMap

首先我們檢視文件,並匯入Demo專案來學習一下basic map功能:
首先有幾個重要的類:
開啟jar package(Android_Map_V2.jar)中的package(com.amap.api.maps)有Amap,MapFragment,SupportMapFragment,MapView,Projection等重要的類。

首先我們要清楚Amap是高德地圖的核心,其提供了map服務,為MapView和Frament(SupportFragment)是載入map的元件:
 我們通過一個基本案例來學習如何載入map:

step1:

編寫AndroidManiFest配置文件:

  1. <span style="font-size:18px;">  <meta-data  
  2.             android:name="com.amap.api.v2.apikey"
  3.             android:value="d460709e9d9db7763284e31fc95cdc36" /></span>  

這一步就是將你為你的apps申請的api key應用到這個配置文件中;

step 2:

原始碼複製列印關於
  1. <?xml version="1.0"
     encoding="utf-8"?>   
  2. <fragment   
  3.   android:id="@+id/map"   
  4.   android:name="com.amap.api.maps.SupportMapFragment"   
  5.   android:layout_width="match_parent"   
  6.   android:layout_height="match_parent" />  

這是自定義佈局xml中的關鍵載入map的UI元件,用來顯示map;

step 3:

  1. <span style="font-size:18px;">aMap = ((SupportMapFragment) getSupportFragmentManager()  
  2.                     .findFragmentById(R.id.map)).getMap();</span>  

這一步是在程式碼中呼叫getSupportFragmentManager.findFragmentById().getMap()方法讓Fragment來顯示map服務提供的地圖。

這樣簡單地三步就可以在應用中載入最簡單的basic map了

Basic Map截圖如下:


由於有的到時候我們檢視興趣點需要一些清晰的基本資訊,所以接下來我們來檢視如何給指定地點新增一些標記(Marker):

關鍵程式碼如下:

原始碼複製列印關於
  1. aMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById  
  2.          (R.id.map)).getMap();  
  3. LatLng marker1 = new LatLng(39.24426, 100.18322);  
  4. aMap.addMarker(new MarkerOptions().position(marker1).title("Marker1 ")  
  5.          .icon(BitmapDescriptorFactory  
  6.          .defaultMarker(BitmapDescriptorFactory.HUE_AZURE)).draggable(true));  
要為自己的設定的興趣點設定自定義的標記,就要呼叫aMap的addMarker()方法

標記累MarKerOptions的幾個引數解釋如下:

position:設定要設定標記的興趣點的位置;

title:點選興趣點是提示的標題

snippet:點選興趣點是提示框的具體內容

draggable:設定興趣點是否可以拖拽

icon:設定興趣點的圖示

關於icon這個引數,須通過過BitmapDescriptorfactory類來設定,汽油機中方法:

1 .defaultMarker()方法,Amap預設為我們提供了十個常量圖示;

2 .FromResource()方法,從專案資源載入圖示;

3 .FromAsset()方法,從生檔案中載入;

4 .FromFile(String path)方法,從具體檔案中載入;

5 .FromBitMap()方法,使用點陣圖像;

這樣我們就為我們需要加標記的興趣點加了自定義的標記。

標記功能截圖如下:

1

對於Basic Map中的新增Marker我們有一些事件處理:

  • 點選標記事件
  • 拖動標記事件
  • 點選資訊視窗
相對應的我們可以設定一些監聽器來監聽這些事件:

1 OnMarkerClickListener(OnMarkerClick)

2 OnMarkerDragListener(OnMarkerDrag)

3 OnInfoWindowClickListener(OnInfoWindowClick)

再從剛才的例子中獲取對於白標記點選時間的處理:

  1. <span style="font-size:18px;">defaultMarker = aMap.addMarker(new MarkerOptions()  
  2.                 .position(Constants.FANGHENG).title("方恆").snippet("方恆國際中心大樓A座")  
  3.                 .icon(BitmapDescriptorFactory.defaultMarker()));  
  4.         aMap.getUiSettings().setZoomControlsEnabled(true);// 設定系統預設縮放按鈕可見
  5.         aMap.setOnMarkerClickListener(this);// 對marker新增點選監聽器</span>
這是設定一個興趣點的標記,然後看監聽事件的程式碼:
  1. <span style="font-size:18px;">  @Override
  2.     publicboolean onMarkerClick(Marker marker) {  
  3.         if (marker.equals(defaultMarker)) {  
  4.             ToastUtil.show(BasicMapActivity.this, marker.getSnippet());  
  5.         }  
  6.         returnfalse;  
  7.     }</span>  

點選截圖:


除了處理點選事件外,Amap還有一些常用的方法和時間處理:

1 比例尺:

  1. <span style="font-size:18px;">publicvoid getScale(View v) {  
  2.         float scale = aMap.getScalePerPixel();  
  3.         Toast.makeText(BasicMapActivity.this"每畫素代表" + scale + "米",  
  4.                 Toast.LENGTH_SHORT).show();  
  5.     }  
  6. }  
  7. </span>  

呼叫amp.getScalePerPixer()方法來獲得比例尺;


2 處理截圖事件:

  1. <span style="font-size:18px;">publicvoid getMapScreenShot(View v) {  
  2.         aMap.getMapPrintScreen(new AMap.onMapPrintScreenListener() {  
  3.             @Override
  4.             publicvoid onMapPrint(Drawable r) {  
  5.                 Bitmap bitmap = ((BitmapDrawable) r).getBitmap();  
  6.                 try {  
  7.                     FileOutputStream fos = new FileOutputStream(Environment  
  8.                             .getExternalStorageDirectory()  
  9.                             + "/test_"
  10.                             + sdf.format(new Date()) + ".png");  
  11.                     boolean b = bitmap.compress(CompressFormat.PNG, 100, fos);  
  12.                     try {  
  13.                         fos.flush();  
  14.                     } catch (IOException e) {  
  15.                         e.printStackTrace();  
  16.                     }  
  17.                     try {  
  18.                         fos.close();  
  19.                     } catch (IOException e) {  
  20.                         e.printStackTrace();  
  21.                     }  
  22.                     if (b)  
  23.                         Toast.makeText(BasicMapActivity.this"截圖成功",  
  24.                                 Toast.LENGTH_SHORT).show();  
  25.                 } catch (FileNotFoundException e) {  
  26.                     e.printStackTrace();  
  27.                 }  
  28.             }  
  29.         });  
  30.     }</span>  

呼叫amp.getMapPrintScreen()方法來獲得截圖,而引數就是AMap.OnMapPrintScreenListener{onMapPrintSceen()},這樣就可以處理截圖事件.

截圖之後將會把截圖圖儲存制定的檔案:

相關推薦

地圖api定義載入地圖

高德地圖api有幾大功能模組:Amap,Location,Search,OfflineMap 首先我們檢視文件,並匯入Demo專案來學習一下basic map功能: 首先有幾個重要的類: 開啟jar package(Android_Map_V2.jar)中的packag

Arcgis Server for JavaScript API定義InfoWindow

各位看到這個標題不要嫌煩,因為本人最近一直在研究相關的問題,所以相關文章也只能是這些,同時希望看過我的文章的朋友,我的文章能夠給你幫助。 在前面的兩篇相關的文章裡面,實現InfoWindow是通過div的東西實現的,本文要講的是通過整合InfoWindowBase實現infowindow的。實現後Inf

iOS開發定義載入等待框(MBProgressHUD)

原文地址:http://blog.csdn.net/ryantang03/article/details/7877120 MBProgressHUD是一個開源專案,實現了很多種樣式的提示框,使用上簡單、方便,並且可以對顯示的內容進行自定義,功能很強大,很多專案中都有

(三)地圖定義縮放及縮放動畫效果

這一節主要實現的功能是地圖的自定義縮放及縮放的動畫效果,還是直接放上程式碼更直觀些,主要部位裡面基本有註解 還是老樣子,首先是新建activity_zoom_animate.xml佈局檔案 <?xml version="1.0" encoding="utf-8"?> <

地圖apilocation定位

關於定位,分為GPS定位和網路定位。本文將詳細描述的瀏覽器定位,屬於網路定位。這是一種通過使用高德JS-API來實現位置定位、城市定位的方法,包含了IP定位,檢索等多種網路定位方式。如果您的手機支援GPS功能,能夠自動獲取GPS資訊,定位將更加準確。 瀏覽器定位 瀏覽器定位外掛,

基於地圖實現完全定義Marker

  做地圖社交類APP開發的都知道,一般情況下,為了整體的美觀和使用者體驗度,我們需要定製化Marker的樣式。本文中實現的方式都是基於高德地圖的,百度地圖也類似,大家可以照葫蘆畫瓢,廢話不多說,先來看看最終效果: 實現思路: 先來看看高德官方提供的設

百度地圖JavaScript API 學習定義標註圖示(二)

地圖繪製之新增自定義標註圖示(二) 官方提供了兩種方法來自定義標註圖示: 通過引數MarkerOptions的icon屬性進行設定 使用Marker.setIcon()方法。 第二

地圖-添加定義圖標

click 的人 icon 100% text 我們 posit cti user 1、問題背景 這裏有張武漢市地圖,點擊按鈕在地圖上指定經度、緯度下添加小圖標 2、實現源碼 <!DOCTYPE html> <html> <

SSM-SpringMVC-24:SpringMVC異常定義異常

BE request input suffix super() internal except simple res ------------吾亦無他,唯手熟爾,謙卑若愚,好學若饑------------- 自定義異常,大家都會,對吧,無非就是繼承異常類等操作,

kubernetes學習筆記十二:資源指標API定義指標API

第一章、前言 以前是用heapster來收集資源指標才能看,現在heapster要廢棄了從1.8以後引入了資源api指標監視 資源指標:metrics-server(核心指標) 自定義指標:prometheus,k8s-prometheus-adapter(將Prometheus採集的資料轉換為指

arcgis api for js定義範圍查詢

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>自定義範圍</title> <!-

地圖API】從零開始學JS API(七)——定位方式大揭祕

摘要:關於定位,分為GPS定位和網路定位2種。GPS定位,精度較高,可達到10米,但室內不可用,且超級費電。網路定位,分為wifi定位和基站定位,都是通過獲取wifi或者基站資訊,然後查詢對應的wifi或者基站位置資料庫,得到的定位地點。定位資料庫可以不斷完善不斷補充,所以,

ArcGIS載入、OSM和谷歌等地圖

1. 引言   網路地圖對於我們來說已經不是什麼新鮮事了,上面有各大網際網路公司收集的海量的地理空間資料。一般網路地圖的地圖是以切片形式存在的,因此,本文重點講述如何將這些網路切片地圖載入並顯示再ArcGIS中。   其實ArcGIS自帶了網路地圖載入功能,File->Add Data->

利用百度API定義的點標註在百度地圖

有時候我們需要將自定義的點的資訊標註在地圖上,正好最近用到了這個功能,網上學習百度API後,也已經實現,現在在這做一個總結。 1.實現過程 要使用百度API,我們首先需要得到一個金鑰(ak),這個可以免費申請,具體申請流程在這就不贅述了。 現在詳細介紹下實

iOS開發百度地圖大頭針的定義解決方法

方法1 - (BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id <BMKAnnotation>

Android UI 定義RadarView——仿微信雷達掃描

最近看了一個視訊講了一種微信雷達掃描的實現方案,借鑑了一下,自己也寫一個玩玩,與大家分享一下。基本想出來三種解決方案,根據不同需求情況選擇即可。 方案一實現思路(通用): 1.自定義view  2.重寫onDraw()方法 3.畫四個無鋸齒空心圓 4.畫以最大圓為半徑的實心漸變圓 5.建立矩陣,旋轉畫布,

轉載:地圖API學習 從零開始學JS API(一)地圖展現

摘要:關於地圖的顯示,我想大家最關心的就是麻點圖,自定義底圖的解決方案了吧。在過去,marker大於500之後,瀏覽器開始逐漸卡死,大家都開始尋找解決方案,比如聚合marker啊,比如麻點圖啊。聚合marker裡面還有一些複雜的演算法,而麻點圖,最讓大家頭疼的,就是如何生成麻點圖,如何切圖,如何把圖片貼到地圖

python定義異步IO客戶端

class close sel 封裝 [0 urn 簡單 pytho syn #!/usr/bin/env python # -*- coding: utf8 -*- # __Author: "Skiler Hao" # date: 2017/5/16 15:04

Hadoop實戰-Flume定義Sink(十九)

current ioe back urn oop print out java try import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream;

C#定義特性

創建 tip comm 字段 運算符 包含 自動 名稱 程序   在前面介紹的代碼中有使用特性,這些特性都是Microsoft定義好的,作為.NET Framework類庫的一部分,許多特性都得到了C#編譯器的支持。   .NET Frmework也允許定義自己的特性。自