花了一些時間,但我終於想出了一些東西。我不使用兩個角來添加覆蓋圖,而是使用中心經緯度以及寬度和高度。我添加覆蓋如下。
mOverlayOptions = new GroundOverlayOptions()
.image(BitmapDescriptorFactory.fromBitmap(floorplan.get_floorplanimage()))
.position(new LatLng(floorplan.get_clat(), floorplan.get_clng()), (float) floorplan.get_width(), (float) floorplan.get_height())
.bearing((float) floorplan.get_bearing())
.transparency(mOpacity);
mOverlay = mMap.addGroundOverlay(mOverlayOptions);
所以你必須給佈局規劃初始值begin.Then我添加了兩個標誌,一個位於覆蓋中心(同緯度/經度),另一種沿右側邊緣的中心位於覆蓋圖(mSizeMarker)。確保它們是可拖動的。我不得不做一些數學弄清楚在何處放置在右邊緣的一個。
mCenterMarker = mMap.addMarker(new MarkerOptions().position(new LatLng(floorplan.get_clat(), floorplan.get_clng())));
Double new_longitude = floorplan.get_clng() + (floorplan.get_width()/2/(6371000)) * (180/3.14159265)/Math.cos(floorplan.get_clat() * 3.14159265/180);
mSizeMarker = mMap.addMarker(new MarkerOptions().position(new LatLng(floorplan.get_clat(), new_longitude)));
mCenterMarker.setDraggable(true);
mSizeMarker.setDraggable(true);
所有剩下的就是添加一個OnMarkerDragListener:
mMap.setOnMarkerDragListener(new GoogleMap.OnMarkerDragListener() {
@Override
public void onMarkerDragStart(Marker marker) {
}
}
@Override
public void onMarkerDrag(Marker marker) {
if (marker.equals(mCenterMarker)) {
mOverlay.remove();
mOverlayOptions.position(marker.getPosition(), mOverlay.getWidth(), mOverlay.getHeight());
mOverlay = mMap.addGroundOverlay(mOverlayOptions);
mSizeMarker.setPosition(new LatLng(marker.getPosition().latitude, marker.getPosition().longitude + (mOverlay.getWidth()/2/(6371000)) * (180/3.14159265)/Math.cos(marker.getPosition().latitude * 3.14159265/180)));
}
if (marker.equals(mSizeMarker)) {
marker.setPosition(new LatLng(mCenterMarker.getPosition().latitude, marker.getPosition().longitude));
double newWidth = ((marker.getPosition().longitude - mCenterMarker.getPosition().longitude)/((180/3.14159265)/Math.cos(mCenterMarker.getPosition().latitude * 3.14159265/180))) * 6371000 * 2;
mOverlay.remove();
mOverlayOptions.position(mCenterMarker.getPosition(), (float) newWidth);
mOverlay = mMap.addGroundOverlay(mOverlayOptions);
}
}
@Override
public void onMarkerDragEnd(Marker marker) {
if (marker.equals(mSizeMarker)) {
marker.setPosition(new LatLng(mCenterMarker.getPosition().latitude, marker.getPosition().longitude));
}
}
});
使用中間的標記拖到你想要的佈局圖被定位,而一個,就可以改變寬度的右側(高度會自動更新)。
然後,當圖像被正確地定位,只是有一個保存按鈕的地方,其中所述布圖規劃存儲與位置,寬度和mOverlay的高度的更新。可以添加另一個標記來手動調整方位,但這比我現在需要做的更多的數學。當我最初設置它時,我會繼續調整它。希望這可以幫助別人誰沿着這問題就來了,我知道這個解決方案是對我工作的偉大至今。