Android Map View Toggle - PullRequest
       2

Android Map View Toggle

0 голосов
/ 17 августа 2011

Я пытаюсь переключить свой вид карты со стандартного вида карты на спутник. Я получил следующий код от кого-то на этом сайте. Но «mMapView» подчеркнут красным цветом как ошибка, и выполнение предложенных решений не работает.

Пожалуйста, объясните мне, что я делаю неправильно и что я могу сделать правильно, чтобы это исправить. Спасибо.

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.mapview :
if(mMapView.isSatellite()) {
mMapView.setSatellite(false); 
} else {
mMapView.setSatellite(true); 
}
default :
return super.onOptionsItemSelected(item);
}
}

Мой onCreate:

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map);
MapView mapView = (MapView) findViewById(R.id.mapview);
mapView.setBuiltInZoomControls(true);
mapView.setSatellite(false);
}

Ответы [ 2 ]

2 голосов
/ 17 августа 2011

Создайте поле с mapView и используйте его в «OnOptionItemSelected». Примерно так:

private MapView mapView;
...
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.map);
  mapView = (MapView) findViewById(R.id.mapview);
  mapView.setBuiltInZoomControls(true);
  mapView.setSatellite(false);
}
...
@Override
public boolean onOptionsItemSelected(MenuItem item) {
  switch (item.getItemId()) {
//this should be the id for the item in the menu, no for the map.
//if you select the item in the menu that toggle the view of your map, then, change the map
//I copied your code, but becareful because I think this can give you problems (about 
//having the same ids for the map and for the item in the same spacename ("id")
              case R.id.mapview : 
                if(mapView.isSatellite()) {
                   mapView.setSatellite(false); 
                } else {
                   mapView.setSatellite(true); 
                }
              default :
               return super.onOptionsItemSelected(item);
              }
            }
0 голосов
/ 17 августа 2011

@ Finuka - Это не поможет решению проблемы. Вместо этого они будут иметь ошибку в:

public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.map);
  mapView = (MapView) findViewById(R.id.mapview);
  mapView.setBuiltInZoomControls(true);
  mapView.setSatellite(false);
}

Это должно быть то, что они изначально использовали:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.map);
    MapView mapView = (MapView) findViewById(R.id.mapview);
    mapView.setBuiltInZoomControls(true);
    mapView.setSatellite(false);
}

Я пробовал это в моем приложении карты. (Я не добавил функцию переключения, так как она мне не нужна)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...