使用 google map api in android 添加静态方形网格
Add static square grids using google map api in android
在我的项目中,我需要在 google 地图中定义区域。因此,我想到使用 google-maps-API 在 android 中将 google 地图划分为静态方形网格。我是 google-maps-API 的新手,所以任何帮助都会很棒。
之前有人问过类似的问题,@MaciejGórski 提供了一个很好的解决方案:
我可以添加几条注释,因为上述答案很旧,链接不再有效。他们在几年前弃用的 Google 代码中引用了该项目。我搜索并发现该项目从 Google 代码移动到 GitHub:
https://github.com/mg6maciej/android-maps-extensions
所以您可以按照@MaciejGórski 的说明从以下网址复制文件 DebugHelper.java
和 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
请将我的 API 密钥替换为您在 google_maps_api.xml
中的密钥。
希望对您有所帮助!
在我的项目中,我需要在 google 地图中定义区域。因此,我想到使用 google-maps-API 在 android 中将 google 地图划分为静态方形网格。我是 google-maps-API 的新手,所以任何帮助都会很棒。
之前有人问过类似的问题,@MaciejGórski 提供了一个很好的解决方案:
我可以添加几条注释,因为上述答案很旧,链接不再有效。他们在几年前弃用的 Google 代码中引用了该项目。我搜索并发现该项目从 Google 代码移动到 GitHub:
https://github.com/mg6maciej/android-maps-extensions
所以您可以按照@MaciejGórski 的说明从以下网址复制文件 DebugHelper.java
和 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
请将我的 API 密钥替换为您在 google_maps_api.xml
中的密钥。
希望对您有所帮助!