Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在谷歌地图中显示当前位置的标记_Android_Google Maps Markers - Fatal编程技术网

Android 在谷歌地图中显示当前位置的标记

Android 在谷歌地图中显示当前位置的标记,android,google-maps-markers,Android,Google Maps Markers,我想用一个片段类中的标记来显示google地图中的当前位置。映射已经显示,但是当我初始化MapFragment时,我得到一个NullpointerException 我尝试了以下初始化: MapFragment mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.map); mapFragment.getMapAsync(this); 这是onMapReady函数: @Override public

我想用一个片段类中的标记来显示google地图中的当前位置。映射已经显示,但是当我初始化MapFragment时,我得到一个NullpointerException

我尝试了以下初始化:

 MapFragment mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.map);
 mapFragment.getMapAsync(this);
这是onMapReady函数:

 @Override
public void onMapReady(GoogleMap googleMap) {

    this.googlemap_global = googleMap;
    googlemap_global.setMyLocationEnabled(true);
    googlemap_global.setTrafficEnabled(true);
    googlemap_global.setIndoorEnabled(true);
    googlemap_global.setBuildingsEnabled(true);
    googlemap_global.getUiSettings().setZoomControlsEnabled(true);

}
这是布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
tools:context=".GPSTracker2" >


<fragment
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="400dp"
    class="com.google.android.gms.maps.MapFragment" />

<Button
    android:id="@+id/gps_service_start_stop_button"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="GPS Service starten"/>
以下是logcat输出:

java.lang.NullPointerException: Attempt to invoke virtual method 

'android.app.Fragment android.app.FragmentManager.findFragmentById(int)' on a null object reference
at com.gpstracker.viktor.gpstracker2.Home_Fragment.<init>(Home_Fragment.java:82)
at com.gpstracker.viktor.gpstracker2.GPSTracker2.selectItemFromDrawer(GPSTracker2.java:105)
at com.gpstracker.viktor.gpstracker2.GPSTracker2.access$000(GPSTracker2.java:28)
at com.gpstracker.viktor.gpstracker2.GPSTracker2$1.onItemClick(GPSTracker2.java:67)
at android.widget.AdapterView.performItemClick(AdapterView.java:310)
at android.widget.AbsListView.performItemClick(AbsListView.java:1145)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3066)
at android.widget.AbsListView$3.run(AbsListView.java:3903)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5461)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
谢谢你的帮助。

如下所示进行更改

<fragment
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="400dp"
    class="com.google.android.gms.maps.MapFragment" />

像下面这样改变这个

<fragment
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="400dp"
    class="com.google.android.gms.maps.MapFragment" />

您的XML文件

 <FrameLayout
        android:id="@+id/mapContainer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
在地图上显示标记

    private void addMarks(GoogleMap googleMap) {
    LatLngBounds.Builder builder = new LatLngBounds.Builder();
    LatLng latLng = new LatLng(lat1, long1);
    builder.include(latLng);
    MarkerOptions markerOptions = new MarkerOptions();
    markerOptions.position(latLng);
    markerOptions.title(currentLocation);
    googleMap.addMarker(markerOptions);

    }
您的XML文件

 <FrameLayout
        android:id="@+id/mapContainer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
在地图上显示标记

    private void addMarks(GoogleMap googleMap) {
    LatLngBounds.Builder builder = new LatLngBounds.Builder();
    LatLng latLng = new LatLng(lat1, long1);
    builder.include(latLng);
    MarkerOptions markerOptions = new MarkerOptions();
    markerOptions.position(latLng);
    markerOptions.title(currentLocation);
    googleMap.addMarker(markerOptions);

    }

你能展示你的xml文件吗
 FrameLayout mapContainer = (FrameLayout) findViewById(R.id.mapContainer);
 //show map of 40% of screen
 DisplayMetrics dm = new DisplayMetrics();
 getWindowManager().getDefaultDisplay().getMetrics(dm);
 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
            ViewGroup.LayoutParams.MATCH_PARENT);
    params.height = (int) ((float) dm.heightPixels * (float) 0.5);
    mapContainer.setLayoutParams(params);
    FragmentManager fm = getFragmentManager();
    MapFragment mapFragment = MapFragment.newInstance();
    fm.beginTransaction().replace(R.id.mapContainer, mapFragment).commit();

 mapFragment.getMapAsync(new OnMapReadyCallback() {
                @Override
                public void onMapReady(GoogleMap googleMap) {
                    GoogleMap  mMap = googleMap;
                    mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
                    addMarks(mMap);
    private void addMarks(GoogleMap googleMap) {
    LatLngBounds.Builder builder = new LatLngBounds.Builder();
    LatLng latLng = new LatLng(lat1, long1);
    builder.include(latLng);
    MarkerOptions markerOptions = new MarkerOptions();
    markerOptions.position(latLng);
    markerOptions.title(currentLocation);
    googleMap.addMarker(markerOptions);

    }