高德地图之添加遮盖物
生活随笔
收集整理的這篇文章主要介紹了
高德地图之添加遮盖物
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
第一篇帖子已經把基本的配置和基礎定位完成,這一篇主要是在圖層上添加遮蓋物,包括繪制點、線、圓形遮蓋物、橢圓遮蓋物和矩形、以及多邊形遮蓋物
繪制點遮蓋物
/*** 繪制點遮蓋物*/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;}
總結
以上是生活随笔為你收集整理的高德地图之添加遮盖物的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何删除360的防火墙模块(详解)
- 下一篇: 如何更新一台计算机的驱动程序,怎样更新电