1. 程式人生 > >百度地圖繪製矩形區域

百度地圖繪製矩形區域

百度地圖繪製多邊形區域

 /**
     * 繪製矩形
     */
    private void drawRec() {
        double latitude=Double.parseDouble(coordinates.getLatitude());
        double longitude= Double.parseDouble(coordinates.getLongitude());
        LatLng pt1 = new LatLng(latitude + 0.02, longitude);
        LatLng pt2 = new LatLng(latitude, longitude - 0.03);
        LatLng pt4 = new LatLng(latitude - 0.02, longitude );
        LatLng pt5 = new LatLng(latitude, longitude + 0.03);
        List<LatLng> points = new ArrayList<>();
        points.add(pt1);
        points.add(pt2);
        points.add(pt4);
        points.add(pt5);
        //多邊形覆蓋物
        PolygonOptions polygonOptions = new PolygonOptions();
        polygonOptions.points(points);
        polygonOptions.fillColor(0xAAFFFF00);
        polygonOptions.stroke(new Stroke(2, 0xAA00FF00));
        mBaiduMap.addOverlay(polygonOptions);
    }
新增文字遮蓋物
LatLng latLng = new LatLng(latitude, longitude);  
        TextOptions textOptions = new TextOptions();  
        textOptions.bgColor(0xAAFFFF00)  //設定文字覆蓋物背景顏色  
            .fontSize(28)  //設定字型大小  
            .fontColor(0xFFFF00FF)// 設定字型顏色  
            .text("我在這裡啊!!!!")  //文字內容  
            .rotate(-30)  //設定文字的旋轉角度  
            .position(latLng);// 設定位置  
        bdMap.addOverlay(textOptions);  
GroundOverlay(地形圖圖層覆蓋物)
LatLng southwest = new LatLng(latitude - 0.01, longitude - 0.012);//西南  
        LatLng northeast = new LatLng(latitude + 0.01, longitude + 0.012);//東北  
        LatLngBounds bounds = new LatLngBounds.Builder().include(southwest)  
                .include(northeast).build();//得到一個地理範圍物件  
        BitmapDescriptor bitmap2 = BitmapDescriptorFactory  
            .fromResource(R.drawable.csdn_blog);  
        GroundOverlayOptions groundOverlayOptions = new GroundOverlayOptions();  
        groundOverlayOptions.image(bitmap2);//顯示的圖片  
        groundOverlayOptions.positionFromBounds(bounds);//顯示的位置  
        groundOverlayOptions.transparency(0.7f);//顯示的透明度  
        bdMap.addOverlay(groundOverlayOptions);  
PolylineOptions(折線覆蓋物)
CircleOptions circleOptions = new CircleOptions();  
        circleOptions.center(new LatLng(latitude, longitude));//設定圓心座標  
        circleOptions.fillColor(0XFFfaa755);//圓的填充顏色  
        circleOptions.radius(150);//設定半徑  
        circleOptions.stroke(new Stroke(5, 0xAA00FF00));//設定邊框  
        bdMap.addOverlay(circleOptions);  
DotOptions(圓點覆蓋物)
DotOptions dotOptions = new DotOptions();  
        dotOptions.center(new LatLng(latitude, longitude));//設定圓心座標  
        dotOptions.color(0XFFfaa755);//顏色  
        dotOptions.radius(25);//設定半徑  
        bdMap.addOverlay(dotOptions);  
CircleOptions(圓形(空心)覆蓋物)
CircleOptions circleOptions = new CircleOptions();  
        circleOptions.center(new LatLng(latitude, longitude));//設定圓心座標  
        circleOptions.fillColor(0XFFfaa755);//圓的填充顏色  
        circleOptions.radius(150);//設定半徑  
        circleOptions.stroke(new Stroke(5, 0xAA00FF00));//設定邊框  
        bdMap.addOverlay(circleOptions);  
ArcOptions(弧線覆蓋物)
LatLng pt1 = new LatLng(latitude, longitude - 0.01);  
        LatLng pt2 = new LatLng(latitude - 0.01, longitude - 0.01);  
        LatLng pt3 = new LatLng(latitude, longitude + 0.01);  
        ArcOptions arcOptions = new ArcOptions();  
        arcOptions.points(pt1, pt2, pt3);//設定弧線的起點、中點、終點座標  
        arcOptions.width(5);//線寬  
        arcOptions.color(0xFF000000);  
        bdMap.addOverlay(arcOptions);  
彈出窗覆蓋物
/** 
     * 顯示彈出視窗覆蓋物 
     */  
    private void displayInfoWindow(final LatLng latLng) {  
        // 建立infowindow展示的view  
        Button btn = new Button(getApplicationContext());  
        btn.setBackgroundResource(R.drawable.popup);  
        btn.setText("點我點我~");  
        BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory  
                .fromView(btn);  
        // infowindow點選事件  
        OnInfoWindowClickListener infoWindowClickListener = new OnInfoWindowClickListener() {  
            @Override  
            public void onInfoWindowClick() {  
                reverseGeoCode(latLng);  
                //隱藏InfoWindow  
                bdMap.hideInfoWindow();  
            }  
        };  
        // 建立infowindow  
        InfoWindow infoWindow = new InfoWindow(bitmapDescriptor, latLng, -47,  
                infoWindowClickListener);  
  
        // 顯示InfoWindow  
        bdMap.showInfoWindow(infoWindow);  
    }  
地理編碼與反地理編碼
// 建立地理編碼檢索例項  
        GeoCoder geoCoder = GeoCoder.newInstance();  
        //  
        OnGetGeoCoderResultListener listener = new OnGetGeoCoderResultListener() {  
            // 反地理編碼查詢結果回撥函式  
            @Override  
            public void onGetReverseGeoCodeResult(ReverseGeoCodeResult result) {  
                if (result == null  
                        || result.error != SearchResult.ERRORNO.NO_ERROR) {  
                    // 沒有檢測到結果  
                    Toast.makeText(MainActivity.this, "抱歉,未能找到結果",  
                            Toast.LENGTH_LONG).show();  
                }  
                Toast.makeText(MainActivity.this,  
                        "位置:" + result.getAddress(), Toast.LENGTH_LONG)  
                        .show();  
            }  
  
            // 地理編碼查詢結果回撥函式  
            @Override  
            public void onGetGeoCodeResult(GeoCodeResult result) {  
                if (result == null  
                        || result.error != SearchResult.ERRORNO.NO_ERROR) {  
                    // 沒有檢測到結果  
                }  
            }  
        };  
        // 設定地理編碼檢索監聽者  
        geoCoder.setOnGetGeoCodeResultListener(listener);  
        //  
        geoCoder.reverseGeoCode(new ReverseGeoCodeOption().location(latLng));  
        // 釋放地理編碼檢索例項  
        // geoCoder.destroy();