我创建了一个GoogleMap
对象,并绘制了一个带有方形顶点的多边形,如图所示,但是方形看起来是一个椭圆形。我做错了什么?
这是代码的一个片段:
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
// Add a marker in Sydney and move the camera
LatLng enidh = new LatLng(38.6925785, -9.2955145);
mMap.addMarker(new MarkerOptions().position(enidh).title("Marker in ENIDH"));
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(enidh, 10.0f));
mBoats[0] = mMap.addPolygon(new PolygonOptions()
.add(new LatLng(38.680026, -9.2846651),
new LatLng(38.690026, -9.2846651),
new LatLng(38.690026, -9.2946651),
new LatLng(38.680026, -9.2946651),
new LatLng(38.680026, -9.2846651))
.fillColor(Color.CYAN)
.strokeColor(Color.BLUE)
.strokeWidth(5));
This is the square (rectangle) appearance in android app emulator
答案 0 :(得分:3)
您已使用Polygon
指定了LatLng
的坐标。然而,由1经度和1纬度表示的距离(即以km为单位)为not the same:
每个纬度大约69英里(111公里) 分开。范围变化(由于地球的略呈椭圆形状) 从赤道68.703英里(110.567公里)到69.407(111.699公里) 在两极。这很方便因为每分钟(1/60) 学位)大约一英里。
赤道的经度最宽,为69.172英里 (111.321)并在极点逐渐收缩到零。在北纬40°或 南经度为53英里(85公里)。
因此,即使您创建的多边形的边长度具有相同的无单位值,您也会得到一个不是正方形的矩形。
答案 1 :(得分:1)
您没有正确添加多边形。你必须使用4个不同的坐标作为矩形的角落。
// Instantiates a new Polyline object and adds points to define a rectangle
PolylineOptions rectOptions = new PolylineOptions()
.add(new LatLng(37.35, -122.0))
.add(new LatLng(37.45, -122.0)) // North of the previous point, but at the same longitude
.add(new LatLng(37.45, -122.2)) // Same latitude, and 30km to the west
.add(new LatLng(37.35, -122.2)) // Same longitude, and 16km to the south
.add(new LatLng(37.35, -122.0)); // Closes the polyline.
// Get back the mutable Polyline
Polyline polyline = myMap.addPolyline(rectOptions);
来源:https://developers.google.com/maps/documentation/android-api/shapes