Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android GoogleMap显示一个正方形和矩形_Java_Android - Fatal编程技术网

Java Android GoogleMap显示一个正方形和矩形

Java Android GoogleMap显示一个正方形和矩形,java,android,Java,Android,我已经创建了一个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.295

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

您没有正确添加多边形。必须使用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);

来源:

您已经使用
LatLng
指定了
多边形的坐标。但是,由1个经度和1个纬度表示的距离(即km)为:

每个纬度约为69英里(111公里) 分开地范围各不相同(由于地球略呈椭球状) 从赤道68.703英里(110.567公里)到69.407英里(111.699公里) 在两极。这很方便,因为每分钟(1/60秒 度)约为一英里

赤道的经度最宽,为69.172英里 (111.321)并在极点处逐渐收缩至零。北纬40度或 南面经度之间的距离为53英里(85公里)


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

square是一个矩形:)@miensol他表示正方形显示为长方形。我已经编辑了这个问题。谢谢罗伯特,这是我糟糕的英语。等你缩小,两边都是圆的;)如果你真的需要一个正方形,就加上一个记号。@Msimao别担心,很少有英语母语的人知道长方形和长方形的区别。我想开发者的例子就是这样。谷歌的例子和我使用的完全一样。我用第二个十进制数递增(较小的平方)。你们所有的点都是一样的。使用4个不同的点作为角坐标以形成正方形。