Gil*_*rra 3 android google-maps google-maps-android-api-2
参考:
我正试图在Google Maps Android应用程序中返回用户所选国家/地区的位置.
这样的东西,但在Android谷歌地图.有可能在android中执行此操作吗?
离线可以这样做吗?
xom*_*ena 13
Google Maps API中有关国家/地区或其他功能边界的问题曾被多次询问,但遗憾的是,Google并未公开披露此数据.
要突出显示国家/地区,您应将自己的数据应用为Google地图图层.在下面的答案中提出了很好的解决方法
您可以从OSM下载GeoJSON格式的国家边界.之后,您可以使用Google Maps Android API Utility Library在应用程序中添加GeoJsonLayer.
在我的例子中,我以GeoJSON格式下载了西班牙的边界,并使用GeoJsonLayer加载了GeoJSON文件.
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
private GoogleMap mMap;
@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;
mMap.getUiSettings().setZoomControlsEnabled(true);
LatLng madrid = new LatLng(40.416775,-3.70379);
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(madrid, 3F));
try {
GeoJsonLayer layer = new GeoJsonLayer(mMap, R.raw.es_geojson, getApplicationContext());
GeoJsonPolygonStyle style = layer.getDefaultPolygonStyle();
style.setFillColor(Color.MAGENTA);
style.setStrokeColor(Color.MAGENTA);
style.setStrokeWidth(1F);
layer.addLayerToMap();
} catch (IOException ex) {
Log.e("IOException", ex.getLocalizedMessage());
} catch (JSONException ex) {
Log.e("JSONException", ex.getLocalizedMessage());
}
}
}
Run Code Online (Sandbox Code Playgroud)
您可以从github下载完整的示例项目,不要忘记更改值/ google_maps_api.xml中的API密钥
https://github.com/xomena-so/so41431384
我希望这有帮助!
| 归档时间: |
|
| 查看次数: |
4229 次 |
| 最近记录: |