2017-01-02 4 views
2

Ссылаясь на:Выделите целые страны в Google Maps для Android

Highlight whole countries in Google Maps

Я пытаюсь вернуть расположение выбранных загородного пользователя в приложении Карт Google Android.

Что-то вроде этого, но в Android-картах Google. Есть ли возможность сделать это в андроиде?

Возможно ли это в автономном режиме?

enter image description here

+0

Связанный: http://stackoverflow.com/questions/2931281/open-local-kml-file-in-google-maps-on-android –

ответ

7

Вопрос о стране или других особенностей границ в Google Maps API, был задан вопрос много раз, однако, к сожалению, Google не раскрывает эти данные публично.

Чтобы выделить страну, вы должны применить свои данные в качестве уровня Google Maps. Хорошая работа вокруг была предложена в следующем ответе

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

Вы можете скачать границы стран в формате GeoJSON от OSM. После этого вы можете использовать API Android Google Maps Utility Library, чтобы добавить GeoJsonLayer в ваше приложение.

Для моего примера я загрузил границы Испании в формате GeoJSON и загрузил файл GeoJSON с помощью GeoJsonLayer.

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

Я надеюсь, что это помогает !