2017-01-02 40 views

回答

7

關於在谷歌地圖API的國家或其他特徵的邊界問題被問了很多次,但是,遺憾的是谷歌不公開公開此數據。

要突出顯示該國家,您應該將自己的數據作爲Google地圖圖層應用。尼斯的工作圍繞在以下答案

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

您可以從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()); 
     } 
    } 
} 

您可以從GitHub上的完整的示例項目,不要忘記改變值API密鑰/ google_maps_api.xml

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

enter image description here

我希望這有助於!