如何使用google maps api for android将地图限制为只有一个国家/地区

我对Android的谷歌地图api完全不熟悉,我想知道是否可以限制地图仅向一个国家显示的区域。 我的意思是我的目标用户只在我自己的国家,当应用程序逻辑只在这个国家时,向全世界展示它们是没有用的也不符合逻辑的。

有任何想法吗?

ps:如果在谷歌的api中不可能,有没有办法用另一个API提供地图服务的另一个api表格呢?

如果您仍然感兴趣,现在可以使用setLatLngBoundsForCameraTarget方法将用户的平移限制在给定区域 。

您需要更新Play服务的依赖项:

 dependencies { compile 'com.google.android.gms:play-services:9.6.1' } 

我很确定您不仅可以使用google api服务显示您选择的国家/地区。 但是,您可以做的是,通过查找您的国家/地区代码(例如,使用此链接https://countrycode.org/ ),然后将查询添加到您的Google地方api,将Google地方自动完成限制到特定国家/地区

 components=country:your_country_code //Insert code into example 

例如,这是看起来像:

  https://maps.googleapis.com/maps/api/place/autocomplete/json? input=bhubaneshwar&components=country:in&sensor=false&key=your_key 

开箱即用这是不可能的。 然而,理论上你可以找到显示相关国家的最大边界框然后每次相机移动检查以确保边界框在最大值内。 如果未将其设置为最大值。 这将限制他们到某个地方

您可以覆盖地图并具体说明纬度和经度,并根据您的需要放大并禁用地图的手势,请参阅此示例之前的答案

限制滚动和缩放Google Maps Android API v2

您可以将用户视图限制为地图的特定方形 – 为此,您可以使用以下内容:

 private GoogleMap mMap; // Create a LatLngBounds that includes the city of Adelaide in Australia. private LatLngBounds ADELAIDE = new LatLngBounds( new LatLng(-35.0, 138.58), new LatLng(-34.9, 138.61)); // Constrain the camera target to the Adelaide bounds. mMap.setLatLngBoundsForCameraTarget(ADELAIDE); 

在这种情况下,用户将无法在地图中放大相机完全超出您指定的范围-square的区域。

有关详细信息,请访问: https : //developers.google.com/maps/documentation/android-api/views#restricting_the_users_panning_to_a_given_area