在android中使用google map api添加静态方格

时间:2018-02-16 20:17:16

标签: android google-maps-android-api-2

在我的项目中,我需要在谷歌地图中定义区域。所以,我想用google-maps-API在Android中的静态方格网格中划分谷歌地图。我是google-maps-API的新手,所以任何帮助都会很棒。

1 个答案:

答案 0 :(得分:0)

之前提出了类似的问题,@MaciejGórski提供了一个很好的解决方案:

https://stackoverflow.com/a/16359857/5140781

我可以添加几个注释,因为前面提到的答案很旧,链接不再有效。它们指的是几年前弃用的Google代码中的项目。我搜索并发现该项目已从Google代码转移到GitHub:

https://github.com/mg6maciej/android-maps-extensions

因此,您可以按照@MaciejGórski的说明操作,并从以下网址复制文件DebugHelper.javaSphericalMercator.java

https://github.com/mg6maciej/android-maps-extensions/blob/develop/android-maps-extensions/src/main/java/com/androidmapsextensions/impl/DebugHelper.java

https://github.com/mg6maciej/android-maps-extensions/blob/develop/android-maps-extensions/src/main/java/com/androidmapsextensions/utils/SphericalMercator.java

另请注意,Google地图Android API中的onCameraChange已弃用,因此您必须使用onCameraIdle

我创建了一个示例项目,并且能够创建一个网格

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback, GoogleMap.OnCameraIdleListener {

    private GoogleMap mMap;
    private DebugHelper hlp;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }


    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;

        LatLng center = new LatLng(41.385064,2.173403);

        mMap.getUiSettings().setZoomControlsEnabled(true);

        hlp =  new DebugHelper();
        mMap.setOnCameraIdleListener(this);

        mMap.moveCamera(CameraUpdateFactory.newLatLng(center));
    }

    @Override
    public void onCameraIdle() {
        Projection projection = mMap.getProjection();
        double l1 = projection.getVisibleRegion().farLeft.longitude;
        double l2 = projection.getVisibleRegion().farRight.longitude;

        double grdSize = Math.abs(l2-l1) / 8.0;

        hlp.drawDebugGrid(mMap, grdSize);
    }
}

您可以在GitHub上找到完整的示例项目

https://github.com/xomena-so/so48834248

请在google_maps_api.xml

中替换我的API密钥

enter image description here

我希望这有帮助!