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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

高德地图之添加遮盖物

發布時間:2023/12/14 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 高德地图之添加遮盖物 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第一篇帖子已經把基本的配置和基礎定位完成,這一篇主要是在圖層上添加遮蓋物,包括繪制點、線、圓形遮蓋物、橢圓遮蓋物和矩形、以及多邊形遮蓋物

繪制點遮蓋物

/*** 繪制點遮蓋物*/LatLng latLng = new LatLng(39.906901, 116.397972);aMap.addMarker(new MarkerOptions().position(latLng).title("北京").snippet("DefaultMarker"));
設置自定義遮蓋物

/*** 設置自定義遮蓋物*/MarkerOptions markerOption = new MarkerOptions();markerOption.position(latLng);markerOption.title("北京市").snippet("首都");markerOption.draggable(true);//設置Marker可拖動markerOption.icon(BitmapDescriptorFactory.fromBitmap(BitmapFactory.decodeResource(getResources(), R.mipmap.badcar)));// 將Marker設置為貼地顯示,可以雙指下拉地圖查看效果markerOption.setFlat(true);//設置marker平貼地圖效果Marker marker = aMap.addMarker(markerOption);添加marker動畫

/*** 添加marker動畫*/Animation animation = new RotateAnimation(marker.getRotateAngle(), marker.getRotateAngle() + 180, 0, 0, 0);long duration = 1000L;animation.setDuration(duration);animation.setInterpolator(new LinearInterpolator());marker.setAnimation(animation);marker.startAnimation();
marker點擊事件

// 定義 Marker 點擊事件監聽AMap.OnMarkerClickListener markerClickListener = new AMap.OnMarkerClickListener() {// marker 對象被點擊時回調的接口// 返回 true 則表示接口已響應事件,否則返回false@Overridepublic boolean onMarkerClick(Marker marker) {Toast.makeText(MainActivity.this, "點擊marker了", Toast.LENGTH_SHORT);return false;}};// 綁定 Marker 被點擊事件aMap.setOnMarkerClickListener(markerClickListener);marker拖拽事件

// 定義 Marker拖拽的監聽AMap.OnMarkerDragListener markerDragListener = new AMap.OnMarkerDragListener() {// 當marker開始被拖動時回調此方法, 這個marker的位置可以通過getPosition()方法返回。// 這個位置可能與拖動的之前的marker位置不一樣。// marker 被拖動的marker對象。@Overridepublic void onMarkerDragStart(Marker arg0) {Log.e("tag", "開始drag");}// 在marker拖動完成后回調此方法, 這個marker的位置可以通過getPosition()方法返回。// 這個位置可能與拖動的之前的marker位置不一樣。// marker 被拖動的marker對象。@Overridepublic void onMarkerDragEnd(Marker arg0) {Log.e("tag", "拖拽結束");}// 在marker拖動過程中回調此方法, 這個marker的位置可以通過getPosition()方法返回。// 這個位置可能與拖動的之前的marker位置不一樣。// marker 被拖動的marker對象。@Overridepublic void onMarkerDrag(Marker arg0) {Log.e("tag", "拖拽中");}};// 綁定marker拖拽事件aMap.setOnMarkerDragListener(markerDragListener);//設置infoWindowAMap.OnInfoWindowClickListener listener = new AMap.OnInfoWindowClickListener() {@Overridepublic void onInfoWindowClick(Marker arg0) {arg0.setTitle("infowindow clicked");}};//綁定信息窗點擊事件aMap.setOnInfoWindowClickListener(listener);劃線

/*** 劃線*/List<LatLng> latLngs = new ArrayList<>();latLngs.add(new LatLng(39.999391, 116.135972));latLngs.add(new LatLng(39.898323, 116.057694));aMap.addPolyline(new PolylineOptions().addAll(latLngs).width(10).color(Color.argb(255, 1, 1, 1)));
畫圓

/*** 繪制圓*/LatLng latLng2 = new LatLng(39.984059, 116.307771);aMap.addCircle(new CircleOptions().center(latLng2).radius(1000).fillColor(Color.argb(200, 1, 1, 1)).strokeColor(Color.argb(200, 1, 1, 1)).strokeWidth(15));
繪制橢圓

/*** 繪制橢圓*/aMap.addPolygon(new PolygonOptions().addAll(createRectangle(new LatLng(40.238068, 116.501654), 1, 1)).fillColor(Color.TRANSPARENT).strokeColor(Color.RED).strokeWidth(1));PolygonOptions options = new PolygonOptions();int numPoints = 400;float semiHorizontalAxis = 5f;float semiVerticalAxis = 2.5f;double phase = 2 * Math.PI / numPoints;for (int i = 0; i <= numPoints; i++) {options.add(new LatLng(40.238068+ semiVerticalAxis * Math.sin(i * phase),116.501654 + semiHorizontalAxis* Math.cos(i * phase)));} 繪制橢圓aMap.addPolygon(options.strokeWidth(25).strokeColor(Color.argb(50, 1, 1, 1)).fillColor(Color.argb(50, 1, 1, 1))); /*** 生成一個長方形的四個坐標點*/private List<LatLng> createRectangle(LatLng center, double halfWidth,double halfHeight) {List<LatLng> latLngs = new ArrayList<>();latLngs.add(new LatLng(center.latitude - halfHeight, center.longitude - halfWidth));latLngs.add(new LatLng(center.latitude - halfHeight, center.longitude + halfWidth));latLngs.add(new LatLng(center.latitude + halfHeight, center.longitude + halfWidth));latLngs.add(new LatLng(center.latitude + halfHeight, center.longitude - halfWidth));return latLngs;}


繪制不規則多邊形

/*** 繪制不規則多邊形*/// 定義多邊形的5個點點坐標LatLng latLng11 = new LatLng(40.742467, 116.842785);LatLng latLng12 = new LatLng(39.893433, 116.124035);LatLng latLng13 = new LatLng(39.058738, 116.463879);LatLng latLng14 = new LatLng(39.873426, 116.838879);LatLng latLng15 = new LatLng(40.8214661, 116.788097);// 聲明 多邊形參數對象PolygonOptions polygonOptions = new PolygonOptions();// 添加 多邊形的每個頂點(順序添加)polygonOptions.add(latLng11, latLng12, latLng13, latLng14, latLng15);polygonOptions.strokeWidth(15) // 多邊形的邊框.strokeColor(Color.argb(80, 1, 1, 1)) // 邊框顏色.fillColor(Color.argb(80, 1, 1, 1)); // 多邊形的填充色aMap.addPolygon(polygonOptions);點平滑移動

/*** 點平滑移動*/// 獲取軌跡坐標點List<LatLng> points=new ArrayList<>();points.add(latLng11);points.add(latLng12);points.add(latLng13);points.add(latLng14);points.add(latLng15);LatLngBounds bounds = new LatLngBounds(points.get(0), points.get(points.size() - 2));aMap.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds, 50));SmoothMoveMarker smoothMarker = new SmoothMoveMarker(aMap);// 設置滑動的圖標smoothMarker.setDescriptor(BitmapDescriptorFactory.fromResource(R.mipmap.navi_map_gps_locked));LatLng drivePoint = points.get(0);Pair<Integer, LatLng> pair = SpatialRelationUtil.calShortestDistancePoint(points, drivePoint);points.set(pair.first, drivePoint);List<LatLng> subList = points.subList(pair.first, points.size());// 設置滑動的軌跡左邊點smoothMarker.setPoints(subList);// 設置滑動的總時間smoothMarker.setTotalDuration(40);// 開始滑動smoothMarker.startSmoothMove(); 繪制海量點

/*** 設置海量點*/MultiPointOverlayOptions overlayOptions = new MultiPointOverlayOptions();overlayOptions.icon(BitmapDescriptorFactory.fromBitmap(BitmapFactory.decodeResource(getResources(),R.mipmap.goodcar)));//設置圖標overlayOptions.anchor(0.5f,0.5f); //設置錨點multiPointOverlay = aMap.addMultiPointOverlay(overlayOptions);List<MultiPointItem> list = new ArrayList<>();//創建MultiPointItem存放,海量點中某單個點的位置及其他信息MultiPointItem multiPointItem = new MultiPointItem(latLng);MultiPointItem multiPointItem2 = new MultiPointItem(latLng12);MultiPointItem multiPointItem3 = new MultiPointItem(latLng13);MultiPointItem multiPointItem4 = new MultiPointItem(latLng14);list.add(multiPointItem);list.add(multiPointItem2);list.add(multiPointItem3);list.add(multiPointItem4);multiPointOverlay.setItems(list);//將規范化的點集交給海量點管理對象設置,待加載完畢即可看到海量點信息// 定義海量點點擊事件AMap.OnMultiPointClickListener multiPointClickListener = new AMap.OnMultiPointClickListener() {// 海量點中某一點被點擊時回調的接口// 返回 true 則表示接口已響應事件,否則返回false@Overridepublic boolean onPointClick(MultiPointItem pointItem) {Log.e("tag","海量點數據點擊"+pointItem.getLatLng());return false;}};// 綁定海量點點擊事件aMap.setOnMultiPointClickListener(multiPointClickListener);}





總結

以上是生活随笔為你收集整理的高德地图之添加遮盖物的全部內容,希望文章能夠幫你解決所遇到的問題。

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