日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android--百度地图之基础地图(三)

發布時間:2025/3/15 Android 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android--百度地图之基础地图(三) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

開發者可利用SDK提供的接口,使用百度為您提供的基礎地圖數據。目前百度地圖SDK所提供的地圖等級為3-21級,所包含的信息有建筑物、道路、河流、學校、公園等內容。

V3.7.0起,地圖支持縮放至21級,暫不支持衛星圖、熱力圖、交通路況圖層的21級顯示,打開以上類型圖層,地圖會自動縮放到20級。

所有疊加或覆蓋到地圖的內容,我們統稱為地圖覆蓋物。如標注、矢量圖形元素(包括:折線、多邊形和圓等)、定位圖標等。覆蓋物擁有自己的地理坐標,當您拖動或縮放地圖時,它們會相應的移動。

百度地圖SDK為廣大開發者提供的基礎地圖和上面的各種覆蓋物元素,具有一定的層級壓蓋關系,具體如下(從下至上的順序):

1、基礎底圖(包括底圖、底圖道路、衛星圖等);

2、瓦片圖層(TileOverlay);

3、地形圖圖層(GroundOverlay);

4、熱力圖圖層(HeatMap);

5、實時路況圖圖層(BaiduMap.setTrafficEnabled(true););

6、百度城市熱力圖(BaiduMap.setBaiduHeatMapEnabled(true););

7、底圖標注(指的是底圖上面自帶的那些POI元素);

8、幾何圖形圖層(點、折線、弧線、圓、多邊形);

9、標注圖層(Marker),文字繪制圖層(Text);

10、指南針圖層(當地圖發生旋轉和視角變化時,默認出現在左上角的指南針);

11、定位圖層(BaiduMap.setMyLocationEnabled(true););

12、彈出窗圖層(InfoWindow);

13、自定義View(MapView.addView(View););

地圖類型

百度地圖Android?SDK為您提供了3種類型的地圖資源(普通矢量地圖、衛星圖和空白地圖),開發者可以利用BaiduMap中的mapType()方法來設置地圖類型。核心代碼如下:


[java]?view plaincopy print?
  • mMapView?=?(MapView)?findViewById(R.id.bmapView);????
  • mBaiduMap?=?mMapView.getMap();????
  • ???
  • //普通地圖????
  • mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);????
  • ???
  • //衛星地圖????
  • mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);????
  • ???
  • //空白地圖,?基礎地圖瓦片將不會被渲染。在地圖類型中設置為NONE,將不會使用流量下載基礎地圖瓦片圖層。使用場景:與瓦片圖層一起使用,節省流量,提升自定義瓦片圖下載速度。??
  • mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NONE);??

  • 實時交通圖

    當前,全國范圍內已支持多個城市實時路況查詢,且會陸續開通其他城市。

    在地圖上打開實時路況的核心代碼如下:

    [java]?view plaincopy print?
  • mMapView?=?(MapView)?findViewById(R.id.bmapView);????
  • mBaiduMap?=?mMapView.getMap();????
  • //開啟交通圖?????
  • mBaiduMap.setTrafficEnabled(true);??

  • 百度城市熱力圖

    百度地圖SDK繼為廣大開發者開放熱力圖本地繪制能力之后,再次進一步開放百度自有數據的城市熱力圖層,幫助開發者構建形式更加多樣的移動端應用。

    百度城市熱力圖的性質及使用與實時交通圖類似,只需要簡單的接口調用,即可在地圖上展現樣式豐富的百度城市熱力圖。

    在地圖上開啟百度城市熱力圖的核心代碼如下:

    [java]?view plaincopy print?
  • mMapView?=?(MapView)?findViewById(R.id.bmapView);????
  • mBaiduMap?=?mMapView.getMap();????
  • //開啟交通圖?????
  • mBaiduMap.setBaiduHeatMapEnabled(true);??

  • 地圖控制和手勢

    地圖控制

    地圖Logo

    • 默認在左下角顯示,不可以移除。

    通過mMapView.setLogoPosition(LogoPosition.logoPostionleftBottom);方法,使用枚舉類型控制顯示的位置,共支持6個顯示位置(左下,中下,右下,左上,中上,右上)。

    • 地圖Logo不允許遮擋,可通過mBaiduMap.setPadding(paddingLeft, paddingTop, paddingRight, paddingBottom);方法可以設置地圖邊界區域,來避免UI遮擋。

    其中參數paddingLeft、paddingTop、paddingRight、paddingBottom參數表示距離屏幕邊框的左、上、右、下邊距的距離,單位為屏幕坐標的像素密度。

    指南針

    指南針默認為開啟狀態,可以關閉顯示 。

    比例尺

    比例尺默認為開啟狀態,可以關閉顯示。同時支持設置MaxZoomLevel和minZoomLevel,可通過mMapView.getMapLevel獲取當前地圖級別下比例尺所表示的距離大小。

    地圖手勢

    地圖平移

    控制是否啟用或禁用平移的功能,默認開啟。如果啟用,則用戶可以平移地圖

    地圖縮放

    控制是否啟用或禁用縮放手勢,默認開啟。如果啟用,用戶可以雙指點擊或縮放地圖視圖。

    地圖俯視(3D)

    控制是否啟用或禁用俯視(3D)功能,默認開啟。如果啟用,則用戶可使用雙指 向下或向上滑動到俯視圖。

    地圖旋轉

    控制是否啟用或禁用地圖旋轉功能,默認開啟。如果啟用,則用戶可使用雙指 旋轉來旋轉地圖。

    禁止所有手勢

    控制是否一并禁止所有手勢,默認關閉。如果啟用,所有手勢都將被禁用。

    標注覆蓋物

    地圖標注

    開發者可根據自己實際的業務需求,利用標注覆蓋物,在地圖指定的位置上添加標注信息。具體實現方法如下:

    //定義Maker坐標點 LatLng point = new LatLng(39.963175, 116.400244); //構建Marker圖標 BitmapDescriptor bitmap = BitmapDescriptorFactory .fromResource(R.drawable.icon_marka); //構建MarkerOption,用于在地圖上添加Marker OverlayOptions option = new MarkerOptions() .position(point) .icon(bitmap); //在地圖上添加Marker,并顯示 mBaiduMap.addOverlay(option);

    針對已經添加在地圖上的標注,可采用如下方式進行手勢拖拽:

    第一步,設置可拖拽:

    OverlayOptions options = new MarkerOptions().position(llA) //設置marker的位置.icon(bdA) //設置marker圖標.zIndex(9) //設置marker所在層級.draggable(true); //設置手勢拖拽 //將marker添加到地圖上 marker = (Marker) (mBaiduMap.addOverlay(options)); 第二步,設置監聽方法:

    [java]?view plaincopy print?
  • //調用BaiduMap對象的setOnMarkerDragListener方法設置marker拖拽的監聽??
  • mBaiduMap.setOnMarkerDragListener(new?OnMarkerDragListener()?{??
  • ????public?void?onMarkerDrag(Marker?marker)?{??
  • ????????//拖拽中??
  • ????}??
  • ????public?void?onMarkerDragEnd(Marker?marker)?{??
  • ????????//拖拽結束??
  • ????}??
  • ????public?void?onMarkerDragStart(Marker?marker)?{??
  • ????????//開始拖拽??
  • ????}??
  • });??

  • 自v3.3.0版本起,SDK提供了給Marker增加動畫的能力,具體實現方法如下:

    [java]?view plaincopy print?
  • //?通過marker的icons設置一組圖片,再通過period設置多少幀刷新一次圖片資源??
  • ArrayList<BitmapDescriptor>?giflist?=?new?ArrayList<BitmapDescriptor>();??
  • giflist.add(bdA);??
  • giflist.add(bdB);??
  • giflist.add(bdC);??
  • OverlayOptions?ooD?=?new?MarkerOptions().position(pt).icons(giflist)??
  • ????????????????.zIndex(0).period(10);????
  • mMarkerD?=?(Marker)?(mBaiduMap.addOverlay(ooD));??
  • ??
  • 針對已添加在地圖上的標注覆蓋物,可利用如下方法進行修改和刪除操作:??
  • ??
  • marker.remove();???//調用Marker對象的remove方法實現指定marker的刪除??
  • ??
  • 自v3.6.0版本起,SDK提供了給加載Marker增加動畫的能力,加載maker時包含兩種加載動畫方式:從地上生長和從天上落下。??
  • ??
  • 以生長動畫為例,具體實現方法如下:??
  • ??
  • MarkerOptions?ooD?=?new?MarkerOptions().position(llD).icons(giflist)??
  • ????????????????.zIndex(0).period(10);??
  • ?if?(animationBox.isChecked())?{??
  • ?????//?生長動畫??
  • ?????ooD.animateType(MarkerAnimateType.grow);??
  • ?}??
  • ?Marker??mMarkerD?=?(Marker)?(mBaiduMap.addOverlay(ooD));??
  • ??
  • 自v3.6.0版本起,SDK提供了給Marker設置透明度的方法,具體實現方法如下:??
  • ??
  • MarkerOptions?ooA?=?new?MarkerOptions().position(llD).icons(giflist)??
  • ????????????????.zIndex(0).period(10).alpha(0.5);??
  • mBaiduMap.addOverlay(ooA);??
  • ??
  • 具體源碼請在OverlayDemo中查看。???

  • 點聚合功能

    自v3.6.0版本起,新增點聚合功能,可通過縮小地圖層級,將定義范圍內的多個標注點,聚合顯示成一個標注點,并在MarkerClusterDemo中開放源碼,方便開發者自行修改。

    [java]?view plaincopy print?
  • //?初始化點聚合管理類??
  • ClusterManager?mClusterManager?=?new?ClusterManager<>(this,?mBaiduMap);??
  • //?向點聚合管理類中添加Marker實例??
  • LatLng?llA?=?new?LatLng(39.963175,?116.400244);??
  • List<MyItem>?items?=?new?ArrayList<>();??
  • items.add(new?MyItem(llA));??
  • mClusterManager.addItems(items);??

  • 具體源碼請在MarkerClusterDemo中查看。

    底圖標注

    自v3.6.0版本起,SDK在BaiduMap提供了控制底圖標注的showMapPoi方法,默認顯示底圖標注。利用此屬性可得到僅顯示道路信息的地圖,方法如下:

    [java]?view plaincopy print?
  • //?將底圖標注設置為隱藏,方法如下:??
  • mBaiduMap.showMapPoi(false)??

  • 運行后,底圖標注被隱藏,效果如圖:

    幾何圖形覆蓋物

    地圖SDK提供多種結合圖形覆蓋物,利用這些圖形,可幫助您構建更加豐富多彩的地圖應用。目前提供的幾何圖形有:點(Dot)、折線(Polyline)、弧線(Arc)、圓(Circle)、多邊形(Polygon)。

    下面以多邊形為例,向大家介紹如何使用幾何圖形覆蓋物:

    [java]?view plaincopy print?
  • //定義多邊形的五個頂點????
  • LatLng?pt1?=?new?LatLng(39.93923,?116.357428);????
  • LatLng?pt2?=?new?LatLng(39.91923,?116.327428);????
  • LatLng?pt3?=?new?LatLng(39.89923,?116.347428);????
  • LatLng?pt4?=?new?LatLng(39.89923,?116.367428);????
  • LatLng?pt5?=?new?LatLng(39.91923,?116.387428);????
  • List<LatLng>?pts?=?new?ArrayList<LatLng>();????
  • pts.add(pt1);????
  • pts.add(pt2);????
  • pts.add(pt3);????
  • pts.add(pt4);????
  • pts.add(pt5);????
  • //構建用戶繪制多邊形的Option對象????
  • OverlayOptions?polygonOption?=?new?PolygonOptions()????
  • ????.points(pts)????
  • ????.stroke(new?Stroke(5,?0xAA00FF00))????
  • ????.fillColor(0xAAFFFF00);????
  • //在地圖上添加多邊形Option,用于顯示????
  • mBaiduMap.addOverlay(polygonOption);??

  • 運行結果如下:

    Android地圖SDK自v3.5.0版本起,新增了折線多段顏色繪制能力,實現的核心代碼如下:

    [java]?view plaincopy print?
  • //構造紋理資源??
  • BitmapDescriptor?custom1?=?BitmapDescriptorFactory??
  • ????????????????.fromResource(R.drawable.icon_road_red_arrow);??
  • BitmapDescriptor?custom2?=?BitmapDescriptorFactory??
  • ????????????????.fromResource(R.drawable.icon_road_green_arrow);??
  • BitmapDescriptor?custom3?=?BitmapDescriptorFactory??
  • ????????????????.fromResource(R.drawable.icon_road_blue_arrow);??
  • //?定義點??
  • LatLng?pt1?=?newLatLng(39.93923,?116.357428);??
  • LatLng?pt2?=?newLatLng(39.91923,?116.327428);??
  • LatLng?pt3?=?newLatLng(39.89923,?116.347428);??
  • LatLng?pt4?=?newLatLng(39.89923,?116.367428);??
  • LatLng?pt5?=?newLatLng(39.91923,?116.387428);??
  • ???
  • //構造紋理隊列??
  • List<BitmapDescriptor>customList?=?newArrayList<BitmapDescriptor>();??
  • customList.add(custom1);??
  • customList.add(custom2);??
  • customList.add(custom3);??
  • ???
  • List<LatLng>?points?=?newArrayList<LatLng>();??
  • List<Integer>?index?=?newArrayList<Integer>();??
  • points.add(pt1);//點元素??
  • index.add(0);//設置該點的紋理索引??
  • points.add(pt2);//點元素??
  • index.add(0);//設置該點的紋理索引??
  • points.add(pt3);//點元素??
  • index.add(1);//設置該點的紋理索引??
  • points.add(pt4);//點元素??
  • index.add(2);//設置該點的紋理索引??
  • points.add(pt5);//點元素??
  • //構造對象??
  • OverlayOptionsooPolyline?=?newPolylineOptions().width(15).color(0xAAFF0000).points(points).customTextureList(customList).textureIndex(index);??
  • //添加到地圖??
  • mBaiduMap.addOverlay(ooPolyline);??

  • 效果圖如下:

    自v3.6.0版本起,擴展了折線多段顏色繪制能力:增加支持分段紋理繪制、分段顏色繪制,實現的核心代碼如下:

    構造PolylineOptions對象,添加折線分段顏色繪制覆蓋物,核心代碼如下:

    [java]?view plaincopy print?
  • //?構造折線點坐標??
  • List<LatLng>?points?=?new?ArrayList<LatLng>();??
  • points.add(new?LatLng(39.965,116.404));??
  • points.add(new?LatLng(39.925,116.454));??
  • points.add(new?LatLng(39.955,116.494));??
  • points.add(new?LatLng(39.905,116.554));??
  • points.add(new?LatLng(39.965,116.604));??
  • ???
  • //構建分段顏色索引數組??
  • List<Integer>?colors?=?new?ArrayList<>();??
  • colors.add(Integer.valueOf(Color.BLUE));??
  • colors.add(Integer.valueOf(Color.RED));??
  • colors.add(Integer.valueOf(Color.YELLOW));??
  • colors.add(Integer.valueOf(Color.GREEN));??
  • ???
  • OverlayOptions?ooPolyline?=?new?PolylineOptions().width(10)??
  • ????????.colorsValues(colors).points(points);??
  • 添加在地圖中??
  • Polyline??mPolyline?=?(Polyline)?mBaiduMap.addOverlay(ooPolyline);??

  • 檢索結果覆蓋物

    針對檢索功能模塊(POI檢索、線路規劃等),地圖SDK還對外提供相應的覆蓋物來快速展示結果信息。這些方法都是開源的,開發者可根據自己的實際去求來做個性化的定制。

    利用檢索結果覆蓋物展示POI搜索結果的方式如下:

    第一步,構造自定義 PoiOverlay 類;

    [java]?view plaincopy print?
  • private?class?MyPoiOverlay?extends?PoiOverlay?{????
  • ????public?MyPoiOverlay(BaiduMap?baiduMap)?{????
  • ????????super(baiduMap);????
  • ????}????
  • ????@Override????
  • ????public?boolean?onPoiClick(int?index)?{????
  • ????????super.onPoiClick(index);????
  • ????????return?true;????
  • ????}????
  • }??

  • 第二步,在POI檢索回調接口中添加自定義的PoiOverlay;

    [java]?view plaincopy print?
  • public?void?onGetPoiResult(PoiResult?result)?{????
  • ????if?(result?==?null?||?result.error?==?SearchResult.ERRORNO.RESULT_NOT_FOUND)?{????
  • ????????return;????
  • ????}????
  • ????if?(result.error?==?SearchResult.ERRORNO.NO_ERROR)?{????
  • ????????mBaiduMap.clear();????
  • ????????//創建PoiOverlay????
  • ????????PoiOverlay?overlay?=?new?MyPoiOverlay(mBaiduMap);????
  • ????????//設置overlay可以處理標注點擊事件????
  • ????????mBaiduMap.setOnMarkerClickListener(overlay);????
  • ????????//設置PoiOverlay數據????
  • ????????overlay.setData(result);????
  • ????????//添加PoiOverlay到地圖中????
  • ????????overlay.addToMap();????
  • ????????overlay.zoomToSpan();????
  • ????????return;????
  • ????}????
  • }??

  • 運行結果如下:

    利用TransitRouteOverlay展示公交換乘結果:

    [java] view plaincopy print?
  • //在公交線路規劃回調方法中添加TransitRouteOverlay用于展示換乘信息????
  • public?void?onGetTransitRouteResult(TransitRouteResult?result)?{????
  • ????if?(result?==?null?||?result.error?!=?SearchResult.ERRORNO.NO_ERROR)?{????
  • ????????//未找到結果????
  • ????????return;????
  • ????}????
  • ????if?(result.error?==?SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR)?{????
  • ????????//起終點或途經點地址有岐義,通過以下接口獲取建議查詢信息????
  • ????????//result.getSuggestAddrInfo()????
  • ????????return;????
  • ????}????
  • ????if?(result.error?==?SearchResult.ERRORNO.NO_ERROR)?{????
  • ????????route?=?result.getRouteLines().get(0);????
  • ????????//創建公交路線規劃線路覆蓋物?????
  • ????????TransitRouteOverlay?overlay?=?new?MyTransitRouteOverlay(mBaidumap);????
  • ????????//設置公交路線規劃數據???????
  • ????????overlay.setData(route);????
  • ????????//將公交路線規劃覆蓋物添加到地圖中????
  • ????????overlay.addToMap();????
  • ????????overlay.zoomToSpan();????
  • ???}????
  • }??

  • 運行結果如下:

    轉載:http://blog.csdn.net/chaoyu168/article/details/51360899

    總結

    以上是生活随笔為你收集整理的Android--百度地图之基础地图(三)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 热99这里只有精品 | 欧美精品一区二区免费看 | 日韩视频免费播放 | 综合久久2o19 | 2019亚洲天堂 | 天天看黄色 | 精品久久久久久无码国产 | 三级黄在线观看 | 成人免费看片视频 | 日本黄色大片网站 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 一级免费看片 | 影音先锋在线国产 | 欧美用舌头去添高潮 | julia中文字幕在线 | 色综合五月天 | 欧美夫妻性生活视频 | 成人av免费在线播放 | 粗喘呻吟撞击猛烈疯狂 | 国产午夜福利在线播放 | 国产日韩视频 | 久视频在线观看 | 欧美日韩在线免费观看 | 国产综合婷婷 | 亚洲免费av在线 | 日韩avav| 久久精品欧美日韩 | 尤物视频在线观看 | 深夜成人福利 | 在线观看亚洲专区 | 一级片麻豆 | 国产在线伊人 | 亚洲国产天堂av | 国产精品国产三级国产专区52 | 一级黄色a级片 | www.麻豆av.com| 樱花电影最新免费观看国语版 | 少妇4p| 久久精品一二三区 | 日本熟妇乱子伦xxxx | 91视频导航 | 熟女一区二区三区四区 | 久久激情免费视频 | 16一17女人毛片 | 毛片黄色一级 | 国产精品视频福利 | 中文字幕av一区二区三区人妻少妇 | 精精国产xxxx视频在线 | 中文字幕在线观看二区 | 好吊日在线观看 | 欧美日韩乱 | 国产女主播在线一区二区 | 国产视频三区 | 久色 | xxxxav| 自拍偷拍欧美 | 日韩欧美中文字幕精品 | 福利色导航| 亚洲婷婷综合网 | 亚洲va天堂va国产va久 | 日产欧产va高清 | 亚洲视频 中文字幕 | 欧美日韩操 | 日韩黄色片 | 日韩a视频 | 黑人多p混交群体交乱 | 亚洲色图另类图片 | av免费观看网址 | 啪啪国产精品 | 91网站免费在线观看 | 偷拍亚洲精品 | 想要视频在线 | 亚洲精品在线观看免费 | 亚洲网站色 | 自拍偷拍亚洲 | 天天草比 | 免费的性爱视频 | 精品久久久久久久久久久久久久久久久 | 先锋影音一区二区三区 | 寡妇一级片| 成人av影视在线观看 | 夜夜爱夜夜操 | 久久亚洲婷婷 | 国产一区视频在线 | 国产日韩不卡 | √8天堂资源地址中文在线 欧美精品在线一区二区 | 中国精品久久 | 日日夜夜狠 | av不卡高清 | 欧美性受xxx黑人xyx性爽 | 天天干天天干天天 | 日韩精品在线视频 | 国产精品免费在线播放 | 毛色毛片| av香蕉网 | 国产伦精品免费视频 | 亚洲一区二区自拍偷拍 | 在线视频导航 | 久久澡 |