2016-06-22 18 views
0

1つのrecyclerviewに2つの異なるレイアウトが必要なアプリケーションがあります。私はすでにそれをしました。最初のレイアウトはmap用です。私はmapviewを使っています。もう1つは場所のリストです。getMap()は非推奨です

私の問題は、getMap();が廃止されました。使用できるオプションはありますか?

彼らは私が断片を持っていたいなら、私はmapviewを使うべきだと言った。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="match_parent" 
      android:layout_height="160dp" 
      android:orientation="vertical"> 
<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <RelativeLayout 
     android:id="@+id/mapHolder" 
     android:layout_width="match_parent" 
     android:layout_height="160dp" 
     > 
     <com.google.android.gms.maps.MapView 
      android:id="@+id/mapImageView" 
      xmlns:map="http://schemas.android.com/apk/res-auto" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      map:liteMode="false" 
      map:mapType="normal" 
      map:cameraZoom="15" /> 
    </RelativeLayout> 
</LinearLayout> 

if (position == 0) { 
       MyGoogleMap myGoogleMap = (MyGoogleMap) holder; 
       GoogleMap googleMap = myGoogleMap.map.getMap(); 
       if (googleMap != null) { 
        for (int i = 0; i < mModelNearbies.size(); i++) { 
         MarkerOptions markerOptions = new MarkerOptions(); 
         LatLng latLng = new LatLng(Double.parseDouble(mModelNearbies.get(i).getShop_lat()), Double.parseDouble(mModelNearbies.get(i).getShop_long())); 
         markerOptions.position(latLng); 
         markerOptions.title(mModelNearbies.get(i).getShop_name() + " : " + mModelNearbies.get(i).getShop_address()); 
         googleMap.addMarker(markerOptions); 
        } 
       } 
      } 

そしてOnMapReadyCallbackため。

class MyGoogleMap extends MyNearbyHolder implements OnMapReadyCallback { 
     GoogleMap gMap; 
     MapView map; 

     public MyGoogleMap(View itemView) { 
      super(itemView); 
      map = (MapView) itemView.findViewById(R.id.mapImageView); 

      if (map != null) { 
       map.onCreate(null); 
       map.onResume(); 
       map.getMapAsync(this); 
      } 
     } 

     @Override 
     public void onMapReady(GoogleMap googleMap) { 
      MapsInitializer.initialize(mContext); 
      this.gMap = googleMap; 
      if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) { 
       this.gMap.setMyLocationEnabled(true); 
       LatLng latLng = new LatLng(14.5500, 121.0300); 
       this.gMap.moveCamera(CameraUpdateFactory.newLatLng(latLng)); 
       this.gMap.animateCamera(CameraUpdateFactory.zoomTo(12)); 

      } 
     } 
    } 

答えて

1

あなたの実際の問題:

あなたはすでにあなたのHolderクラスでGoogleMapオブジェクトがあります。

class MyGoogleMap extends MyNearbyHolder implements OnMapReadyCallback { 

    // See this 
    GoogleMap gMap; 

    //Your code 
} 

は、なぜあなたはmyGoogleMap.map.getMap()をやっているの? ジャスト以下のようにGoogleマップ上の既存のオブジェクトを使用します。getMap()を非推奨の交換についての撮影

if (position == 0) { 
     MyGoogleMap myGoogleMap = (MyGoogleMap) holder; 
     GoogleMap googleMap = myGoogleMap.gMap; 
     if (googleMap != null) { 
      for (int i = 0; i < mModelNearbies.size(); i++) { 
       MarkerOptions markerOptions = new MarkerOptions(); 
       LatLng latLng = new LatLng(Double.parseDouble(mModelNearbies.get(i).getShop_lat()), Double.parseDouble(mModelNearbies.get(i).getShop_long())); 
       markerOptions.position(latLng); 
       markerOptions.title(mModelNearbies.get(i).getShop_name() + " : " + mModelNearbies.get(i).getShop_address()); 
       googleMap.addMarker(markerOptions); 
      } 
     } 
    } 

。あなたはすでに を行っています。ホルダークラスにmap.getMapAsync(this);を使用してください。 getMapAsyncgetMapのためです。

は、より多くの情報のため、この質問を参照してください:Replace getMap with getMapAsync

+0

私はそれを試した後、私はあなたに戻って取得します。 私のgenymotion googleマップに問題があります。ありがとう –

+0

あなたはそれをチェックしましたか? @CharlesGalvez –

+0

申し訳ありません。私はそれをチェックしています。 –