Android高德地圖自定義Markers的例子

下文爲各位重點介紹關於Android高德地圖自定義Markers的例子,但願這篇文章可以讓各位理解到Android高德地圖自定義Markers的方法。git

以前的博客裏說了地圖的嵌入和定位,今天就說說在地圖上顯示一些咱們想要的。在地圖中有自帶的Markers(標記),可是它只顯示一個橢圓的圖標,通常是不符合咱們的需求的,這樣就要咱們本身來自定義。首先標記有下面一些屬性;佈局

1.position(Required) 在地圖上標記位置的經緯度值。參數不能爲空。ui

2.title 當用戶點擊標記,在信息窗口上顯示的字符串。spa

3.snippet 附加文本,顯示在標題下方。code

4.draggable 若是您容許用戶能夠自由移動標記,設置爲「 true 」。默認狀況下爲「 false 」。對象

5.visible 設置「 false 」,標記不可見。默認狀況下爲「 true 」。blog

6.anchor圖標擺放在地圖上的基準點。默認狀況下,錨點是從圖片下沿的中間處。圖片

7.perspective設置 true,標記有近大遠小效果。默認狀況下爲 false。ip

8.能夠經過Marker.setRotateAngle() 方法設置標記的旋轉角度,從正北開始,逆時針計算。如設置旋轉90度,Marker.setRotateAngle(90)資源

9.經過setFlat() 方法設置標誌是否貼地顯示

自定義圖標一般由 BitmapDescriptor 設置。咱們能夠在類 BitmapDescriptorFactory 使用如下其中一種方法定義。

1.fromAsset(String assetName) 在 assets 目錄中使用圖像建立自定義標記。

2.fromBitmap (Bitmap image) 使用位圖圖像建立自定義標記。

3.fromFile (String path) 指定路徑的文件建立自定義圖標。

4.fromResource (int resourceId) 使用已經存在的資源建立自定義圖標。先看一下要實現的效果:

地圖自帶標記  實現效果

實現思路是:自定義佈局,獲取數據填入相應位置,而後將view轉成Bitmap,調用AMap.addMarker(markerOptions) 方法添加到地圖上。

  1. 自定義佈局並填充數據:

for (int i = 0; i < positionEneityList.size(); i++) {

    if (positionEneityList.get(i).getType().equals("1")) {

       View view = View.inflate(getActivity(),R.layout.view_day, null);

       TextView tv_price = (TextView) view.findViewById(R.id.tv_price);

       TextView tv_price_status = (TextView) view.findViewById(R.id.tv_price_status);

       tv_price.setText(positionEneityList.get(i).getPrice());

       tv_price_status.setText("元/時");

       Bitmap bitmap = CommentActivity.convertViewToBitmap(view);

       drawMarkerOnMap(new LatLng(Double.parseDouble(positionEneityList.get(i).getLatitude())

, Double.parseDouble(positionEneityList.get(i).getLongitude())), bitmap, positionEneityList.get(i).getId());

    }

 }

2.轉成Bitmap:

//view 轉bitmap

public static Bitmap convertViewToBitmap(View view) {

    view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));

    view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());

    view.buildDrawingCache();

    Bitmap bitmap = view.getDrawingCache();

    return bitmap;

}

3.添加到地圖上:

/**

 * 在地圖上畫marker

 *

 * @param point      marker座標點位置(example:LatLng point = new LatLng(39.963175,

 *                   116.400244); )

 * @param markerIcon 圖標

 * @return Marker對象

 */

private Marker drawMarkerOnMap(LatLng point, Bitmap markerIcon, String id) {

    if (aMap != null && point != null) {

        Marker marker = aMap.addMarker(new MarkerOptions().anchor(0.5f, 1)

                .position(point)

                .title(id)

                .icon(BitmapDescriptorFactory.fromBitmap(markerIcon)));

 

        return marker;

    }

    return null;

 

}

這樣就實現了上述效果。

相關文章
相關標籤/搜索