2016-12-15 7 views
0

からのMapViewを使って表示されません。私は、私は私の知る限り(フラグメントからのフラグメント・コール)のMapViewを使用しないために持っている断片との引き出しを使用しています。地図の内容は、私がGoogleマップに苦しんだフラグメント

まず私は、許可障害を持っていたので、私は再生成されたキーを、キーツールを実行した認証の問題に関するメッセージがなくなっているので、私のgoogle_maps_api.xmlが正しいです。 StrictModeDiskReadViolationについての奇妙なメッセージがあります。

これは私がlogcatで得るものです:

12-15 20:41:14.842 703-703/com.bernard_zelmans.check I/Google Maps Android API: Google Play services package version: 10084448 
12-15 20:41:14.842 703-703/com.bernard_zelmans.check W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation 
12-15 20:41:14.842 703-703/com.bernard_zelmans.check W/f: Suppressed StrictMode policy violation: StrictModeDiskWriteViolation 
12-15 20:41:14.882 703-703/com.bernard_zelmans.check W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation 
12-15 20:41:14.882 703-25272/com.bernard_zelmans.check W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation 
12-15 20:41:14.882 703-703/com.bernard_zelmans.check W/f: Suppressed StrictMode policy violation: StrictModeDiskWriteViolation 
12-15 20:41:14.882 703-25274/com.bernard_zelmans.check W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation 

そしてここでは、私のアプリからのスナップショットです:ここでは

enter image description here

は私のコードです:

以下
public class PortFragment extends Fragment implements OnMapReadyCallback { 
    Context context; 
    View view; 

    MapView mapView; 
    GoogleMap map; 
    LatLng CENTER = null; 

    public LocationManager locationManager; 
    private GoogleMap googleMap; 
    double longitude = 0; 
    double latitude = 0; 

    public PortFragment() { 
     // Required empty public constructor 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     view = inflater.inflate(R.layout.portscan, null); 
     MapsInitializer.initialize(this.getActivity()); 
     mapView = (MapView) view.findViewById(R.id.mapView); 
     mapView.onCreate(savedInstanceState); 
     mapView.getMapAsync(this); 
     return (view); 

    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     context = getActivity().getApplicationContext(); 
    } 

    @Override 
    public void onMapReady(GoogleMap map) { 
     setUpMap(); 
     googleMap = map; 
     LatLng sydney = new LatLng(-34, 151); 
     googleMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney")); 
     googleMap.moveCamera(CameraUpdateFactory.newLatLng(sydney)); 
    } 

    public void setUpMap() { 
     googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID); 
     googleMap.setMyLocationEnabled(true); 
     googleMap.setTrafficEnabled(true); 
     googleMap.setIndoorEnabled(true); 
    } 

私のmanifest.xmlです:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.bernard_zelmans.check"> 

    <uses-feature 
     android:glEsVersion="0x00020000" 
     android:required="true" /> 

    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.STORAGE" /> 
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

    <application 
     android:allowBackup="true" 
     android:configChanges="keyboardHidden|screenSize" 
     android:icon="@mipmap/ic_launcher" 
     android:label="Test" 
     android:logo="@drawable/ic_launcher" 
     android:screenOrientation="portrait" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity android:name=".MainActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity android:name=".Activities.Settings" /> 
     <activity android:name=".Activities.About" /> 

     <service 
      android:name=".Service" 
      android:exported="false" /> 

     <meta-data 
      android:name="com.google.android.gms.version" 
      android:value="@integer/google_play_services_version" /> 

     <meta-data 
      android:name="com.google.android.geo.API_KEY" 
      android:value="@string/google_maps_key" /> 


    </application> 

</manifest> 

答えて

1

あなたのフラグメントにマップを追加したい場合は、このようにそれを作成して追加しないでください。あなたが行ったようにあなたは、あなたのレイアウトでそれを追加する必要がありますが、その後onCreateView()メソッドでは、ビューを取得する必要がありますし、直接それにgetMapAsyncを呼び出す:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    view = inflater.inflate(R.layout.portscan, container);  
    MapFragment mapFragment = (MapFragment) getChildFragmentManager().findFragmentById(R.id.map); 
    mapFragment.getMapAsync(this); 

    return (view); 

} 

とレイアウトで:

<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
    android:name="com.google.android.gms.maps.MapFragment" 
    android:id="@+id/map" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"/> 

として最初にレイアウト内にマップフラグメントを追加してから、それをあなた自身のフラグメントで処理します。

あなたはここアンドロイドGMAPのドキュメントを見てみる必要があります。

https://developers.google.com/maps/documentation/android-api/map

+0

私はGMAPに新しいです。私があなたを理解していれば、私は自分のレイアウト(fragmenthomepage)にフラグメントを追加する必要があります。私がこれを行うと、それは私のマップの断片を作成しませんか?あなたはいつmapviewを使いますか?私はあなたが私に送ったURLを読むでしょう。 – narb

+0

私は自分の投稿をレイアウトで編集しました。 – Yoleth

+0

私は断片を使うので、私はあなたのアプローチを信じていません。私はついにmapviewアプローチを作った。私はmapview.onResume()が欠けていた。とにかくありがとう。 – narb

関連する問題