安卓谷歌地图上一个正方形出现成了矩形

3

我创建了一个 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));

这是安卓应用模拟器中的正方形(矩形)外观


正方形是一个矩形 :) - miensol
@miensol他的意思是正方形显示为长方形。我已经编辑了问题。 - Robert Longson
谢谢Robert,这是我的糟糕英语。 - Msimao
等到你缩小视图,边角才会变圆;如果你真的需要一个正方形,请添加一个标记。 - Eugen Pechanec
@Msimao 不用担心,很少有以英语为母语的人知道矩形和椭圆之间的区别。 - Robert Longson
2个回答

3
您已经使用LatLng指定了Polygon的坐标。然而,1度经度和1度纬度表示的距离(即以公里为单位)并不相同

每一度的纬度大约相差69英里(111公里)。由于地球略微呈椭圆形,范围因此有所变化,赤道上为68.703英里(110.567公里),极地上为69.407英里(111.699公里)。这很方便,因为每一分钟(1/60度)大约是一英里。

一个经度在赤道上最宽,为69.172英里(111.321公里),逐渐缩小到极点为零。在北纬或南纬40°时,经度之间的距离是53英里(85公里)。

因此,即使您创建的多边形的边长具有相同的无单位值,您得到的矩形也不是正方形。

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


我认为来自developers.google的示例与我使用的相当相似。我使用第二个小数位增量(较小的正方形)进行制作。 - Msimao
你的所有点都是相同的。使用4个不同的点作为角坐标来构建正方形。 - Rahul Kumar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接