6

Google Maps Android API v2を使用LatLngBounds.Builder()して、データベースのポイントを使用して地図の境界を設定しようとしています。私は近くにいると思いますが、ポイントを適切にロードしていないと思うため、アクティビティがクラッシュしています。私はほんの数行離れているかもしれません。

//setup map
private void setUpMap() {

    //get all cars from the datbase with getter method
    List<Car> K = db.getAllCars();

    //loop through cars in the database
    for (Car cn : K) {

        //add a map marker for each car, with description as the title using getter methods
        mapView.addMarker(new MarkerOptions().position(new LatLng(cn.getLatitude(), cn.getLongitude())).title(cn.getDescription()));

        //use .include to put add each point to be included in the bounds   
        bounds = new LatLngBounds.Builder().include(new LatLng(cn.getLatitude(), cn.getLongitude())).build();

       //set bounds with all the map points
       mapView.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, 50));
    }
}

すべての車を取得するためにforループを配置する方法にエラーがあると思います。境界ステートメントを削除すると、マップポイントは期待どおりに正しくプロットされますが、マップを適切に境界付けません。

4

1 に答える 1

28

ループ内で毎回新しいLatLngBounds.Builder()を作成しています。これを試して

private LatLngBounds.Builder bounds;
//setup map
private void setUpMap() {

    bounds = new LatLngBounds.Builder();   
    //get all cars from the datbase with getter method
    List<Car> K = db.getAllCars();

    //loop through cars in the database
    for (Car cn : K) {

        //add a map marker for each car, with description as the title using getter methods
        mapView.addMarker(new MarkerOptions().position(new LatLng(cn.getLatitude(), cn.getLongitude())).title(cn.getDescription()));

        //use .include to put add each point to be included in the bounds   
        bounds.include(new LatLng(cn.getLatitude(), cn.getLongitude()));


    }
    //set bounds with all the map points
    mapView.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds.build(), 50));
}
于 2013-02-02T04:28:20.423 に答える