之前也提出过类似的问题,@MaciejGórski提供了一个很好的解决方案:
https://stackoverflow.com/a/16359857/5140781
我可以添加几个注释,因为前面提到的答案很旧,链接不再有效。他们引用了几年前被弃用的Google代码中的项目。我搜索并发现该项目已从Google代码转移到GitHub:
https://github.com/mg6maciej/android-maps-extensions
因此,您可以按照@MaciejGrski的说明复制文件
DebugHelper.java
和
SphericalMercator.java
从以下URL
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
还要注意的是
onCameraChange
在Google Maps中,Android API被弃用,因此您必须使用
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
请在中用您的API密钥替换我的API密钥
google_maps_api.xml
.
我希望这有帮助!