花了一些时间,但我终于想出了一些东西。我不使用两个角来添加覆盖图,而是使用中心经纬度以及宽度和高度。我添加覆盖如下。
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的高度的更新。可以添加另一个标记来手动调整方位,但这比我现在需要做的更多的数学。当我最初设置它时,我会继续调整它。希望这可以帮助别人谁沿着这问题就来了,我知道这个解决方案是对我工作的伟大至今。