Изменение StreetView <-> Спутник Google Карты Android - PullRequest
2 голосов
/ 24 июня 2011

Я хочу переключить свое представление GoogleMaps между StreetView и Satellite с помощью меню.

Вот мой код:

public boolean onCreateOptionsMenu(Menu menu){

    menu.add(0, 0, 0, "StreetView");
    menu.add(0, 0, 1, "Satellite");

    return true;
}

public boolean onOptionsItemSelected (MenuItem item){

    switch (item.getItemId()){
        case 0:
            mapView.setStreetView(true);
        return true;

        case 1 :
            mapView.setSatellite(true);
        return true;

    }

    return false;
}

Не сработает .. что я не так делаю?

Спасибо, prexx

Ответы [ 2 ]

7 голосов
/ 24 июня 2011

Когда вы говорите, что это не работает, нам действительно нужно больше информации, чтобы попытаться помочь вам!Вылетает ли он, остается ли он на Street / Sat View или просто на карте нормалей и т. Д., Попробуйте дать больше информации и, если он потерпел аварию, опубликовать копию logcat.

Я думаю, что все, чего вам не хватает, это строка:

(РЕДАКТИРОВАТЬ: я только что попробовал без вызова инвалида, и это работает, поэтому это должны быть идентификаторы кнопки меню)

mapView.invalidate();

Вам нужно вызвать это для того, чтобы mapView обновился сам, поэтому вызывайте его каждый раз, когда вы изменяете настройки mapView.


Если это не работает, то это может быть ваш идентификатор для кнопокне распознаются в вашем коммутаторе, поэтому попробуйте настроить ваше меню как XML-файл int res / menu / like:

<?xml version="1.0" encoding="utf-8"?>
<menu
  xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:title="Street View" android:numericShortcut="1" android:id="@+id/mapStreet" ></item>
  <item android:title="Sat View" android:numericShortcut="2" android:id="@+id/mapSat"></item>
</menu>

Затем измените свой код на:

public boolean onCreateOptionsMenu(Menu menu){
    super.onCreateOptionsMenu(menu);
    MenuInflater oMenu = getMenuInflater();
    oMenu.inflate(R.menu.mapsmenu, menu);
    return true;
}

public boolean onOptionsItemSelected(MenuItem item){
    switch(item.getItemId()){
    case R.id.mapStreet:
         mapView.setStreetView(true);
         mapView.setSatellite(false);
         mapView.invalidate();
         return true;

    case R.id.mapSat:
         mapView.setSatellite(true);
         mapView.setStreetView(false);
         mapView.invalidate();
         return true;
    }
    return false;
}
5 голосов
/ 08 мая 2014

Не используйте MapView. Используйте GoogleMap и сделайте

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