Intereting Posts
Проблема с запуском моего подписанного хранилища ключей в Eclipse Является ли разработка Android ограничительной, как для iPhone? Определение четных / нечетных чисел (целых чисел)? Есть ли способ предотвратить пересканирование списка в верхнее положение при изменении данных адаптера? Создавать выталкиваемые из растрового изображения Android Studio: Gradle Refresh Failed – Не удалось найти com.android.tools.build:gradle:2.2.0-alpha6 Есть ли лучший веб-просмотр для Android? super.onCreate (savedInstanceState); Можно ли вызвать startActivityForResult из адаптера? Android: сделайте прокручиваемое пользовательское представление Ошибка утверждения в Android Studio при попытке скомпилировать рабочий проект Доступ к dev машине localhost через usb Как передать изображения в ответ сервера с помощью JSON? Base64? Лучшая практика – добавление приложения в меню Android Share «Недостаточно информации для вывода параметра T» с помощью Kotlin и Android

Увеличьте масштаб до маркеров google map V2

У меня есть ArrayList пользовательского объекта с широкими и длинными свойствами.

Мне удалось нанести маркеры на карту. Я хочу, чтобы можно было увеличить масштаб этих маркеров при загрузке карты.

То, что я пробовал, приводит к сбою приложения.

Вот код для загрузки карты:

 public void getBridgeData() { db = new DbHelperClass(this); bridges = db.getAllBridges(); DecimalFormat dc = new DecimalFormat("#.000"); Builder builder = new LatLngBounds.Builder(); for (int i= 0;i<bridges.size();i++) { Bridge b= (Bridge)bridges.get(i); double lati= b.getLatitude(); double longo= b.getLongitude(); double reflat= b.getReflat(); double reflong= b.getReflong(); LatLng start = new LatLng(reflat,reflong); LatLng end = new LatLng(lati,longo); GeneralUtils uts = new GeneralUtils(); double ch= uts.calculateDistance(start, end); String chainage = dc.format(ch); String mysnipet = "Location:" + b.getRoadname() + " " + chainage; Marker mm=map.addMarker(new MarkerOptions().position(new LatLng(lati, longo)) .title(b.getBridgename()) .snippet(mysnipet)); builder.include(mm.getPosition()); } LatLngBounds bounds= builder.build(); map.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, 15)); map.setMapType(GoogleMap.MAP_TYPE_HYBRID); } 

Здесь также часть кода

 public class MainActivity extends FragmentActivity { private GoogleMap map; private DbHelperClass db; private List<Bridge> bridges = new ArrayList<Bridge>(); CameraUpdate cu; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_map); //AddSomeData(); map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)) .getMap(); if(map!=null) { getBridgeData(); } } } 

Вот журнал ошибок:

 05-30 22:19:28.894: E/AndroidRuntime(5593): FATAL EXCEPTION: main 05-30 22:19:28.894: E/AndroidRuntime(5593): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.bridge.bridgeinventory/com.bridge.bridgeinventory.MainActivity}: java.lang.IllegalStateException: Error using newLatLngBounds(LatLngBounds, int): Map size can't be 0. Most likely, layout has not yet occured for the map view. Either wait until layout has occurred or use newLatLngBounds(LatLngBounds, int, int, int) which allows you to specify the map's dimensions. 05-30 22:19:28.894: E/AndroidRuntime(5593): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1755) 05-30 22:19:28.894: E/AndroidRuntime(5593): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1774) 05-30 22:19:28.894: E/AndroidRuntime(5593): at android.app.ActivityThread.access$1500(ActivityThread.java:157) 05-30 22:19:28.894: E/AndroidRuntime(5593): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1001) 05-30 22:19:28.894: E/AndroidRuntime(5593): at android.os.Handler.dispatchMessage(Handler.java:130) 05-30 22:19:28.894: E/AndroidRuntime(5593): at android.os.Looper.loop(SourceFile:351) 05-30 22:19:28.894: E/AndroidRuntime(5593): at android.app.ActivityThread.main(ActivityThread.java:3841) 05-30 22:19:28.894: E/AndroidRuntime(5593): at java.lang.reflect.Method.invokeNative(Native Method) 05-30 22:19:28.894: E/AndroidRuntime(5593): at java.lang.reflect.Method.invoke(Method.java:538) 05-30 22:19:28.894: E/AndroidRuntime(5593): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:969) 05-30 22:19:28.894: E/AndroidRuntime(5593): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:727) 05-30 22:19:28.894: E/AndroidRuntime(5593): at dalvik.system.NativeStart.main(Native Method) 05-30 22:19:28.894: E/AndroidRuntime(5593): Caused by: java.lang.IllegalStateException: Error using newLatLngBounds(LatLngBounds, int): Map size can't be 0. Most likely, layout has not yet occured for the map view. Either wait until layout has occurred or use newLatLngBounds(LatLngBounds, int, int, int) which allows you to specify the map's dimensions. 05-30 22:19:28.894: E/AndroidRuntime(5593): at kbh.b(Unknown Source) 05-30 22:19:28.894: E/AndroidRuntime(5593): at mas.a(Unknown Source) 05-30 22:19:28.894: E/AndroidRuntime(5593): at mal.a(Unknown Source) 05-30 22:19:28.894: E/AndroidRuntime(5593): at mbi.a(Unknown Source) 05-30 22:19:28.894: E/AndroidRuntime(5593): at fms.onTransact(SourceFile:83) 05-30 22:19:28.894: E/AndroidRuntime(5593): at android.os.Binder.transact(Binder.java:310) 05-30 22:19:28.894: E/AndroidRuntime(5593): at com.google.android.gms.maps.internal.IGoogleMapDelegate$a$a.moveCamera(Unknown Source) 05-30 22:19:28.894: E/AndroidRuntime(5593): at com.google.android.gms.maps.GoogleMap.moveCamera(Unknown Source) 05-30 22:19:28.894: E/AndroidRuntime(5593): at com.bridge.bridgeinventory.MainActivity.getBridgeData(MainActivity.java:148) 05-30 22:19:28.894: E/AndroidRuntime(5593): at com.bridge.bridgeinventory.MainActivity.onCreate(MainActivity.java:44) 05-30 22:19:28.894: E/AndroidRuntime(5593): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1082) 05-30 22:19:28.894: E/AndroidRuntime(5593): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1719) 05-30 22:19:28.894: E/AndroidRuntime(5593): ... 11 more 

Как я могу заставить его работать?

Solutions Collecting From Web of "Увеличьте масштаб до маркеров google map V2"

Проблема в том, что карта еще не загружена в макет, поэтому вы получили эту ошибку

Решение:

  map.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() { @Override public void onMapLoaded() { map.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, 15)); map.setMapType(GoogleMap.MAP_TYPE_HYBRID); } }); 

Он будет вызывать этот метод, когда карта уже загружена в макет.