2017-02-21 60 views
1
public class MapViewFragment extends Fragment implements LocationListener 

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


    public static MapViewFragment newInstance(String tabSelected) { 
     MapViewFragment fragment = new MapViewFragment(); 
     Bundle args = new Bundle(); 
     args.putString(Constants.FRAG_D, tabSelected); 
     fragment.setArguments(args); 

     return fragment; 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     if (getArguments() != null) { 
     } 
    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     MapsInitializer.initialize(getActivity()); 

     if (mapView != null) { 
      mapView.onCreate(savedInstanceState); 
     } 
     initializeMap(); 
    } 

    private void initializeMap() { 
     if (googleMap == null && mapsSupported) { 
      mapView = (MapView) getActivity().findViewById(R.id.map); 
      googleMap = mapView.getMap(); 
      //setup markers etc... 
     } 
    } 





    @Override 
    public void onResume() { 
     super.onResume(); 
     Marker m1,m2,m3; 
     m1 = googleMap.addMarker(new MarkerOptions() 
       .position(new LatLng(38.609556, -1.139637)) 
       .anchor(0.5f, 0.5f) 
       .title("Title1") 
       .snippet("Snippet1")); 


     m2 = googleMap.addMarker(new MarkerOptions() 
       .position(new LatLng(40.4272414,-3.7020037)) 
       .anchor(0.5f, 0.5f) 
       .title("Title2") 
       .snippet("Snippet2")); 

     mapView.onResume(); 
     initializeMap(); 
    } 

    @Override 
    public void onPause() { 
     super.onPause(); 
     mapView.onPause(); 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     mapView.onDestroy(); 
    } 

    @Override 
    public void onLowMemory() { 
     super.onLowMemory(); 
     mapView.onLowMemory(); 
    } 

    @Override 
    public void onLocationChanged(Location location) { 

    } 

我的代码如上所示。我可以在Android Studio中手动设置两个标记,但是我想从当前位置获取一个标记。 任何帮助,或任何想法?使用片段我想要在Android中获取当前位置

回答

1

第一件事,先试试这个:

googleMap.setMyLocationEnabled(true); 

这将显示在页面上,这将使右上方的箭头,你看到你的位置是否启用它。 这个按钮也会触发onMyLocationButtonClick() google api的功能。

然后获取当前位置信息:

Criteria criteria = new Criteria(); 
    LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 
    String provider = locationManager.getBestProvider(criteria, true); 
    Location location = locationManager.getLastKnownLocation(provider); 
    double latitude = location.getLatitude(); 
    double longitude = location.getLongitude(); 
    myPosition = new LatLng(latitude, longitude); 

最后就加你的标记:

googleMap.addMarker(new MarkerOptions().position(myPosition).title("Marker")); 

例外情况和其他信息:https://developers.google.com/maps/documentation/android-api/location

+1

感谢koksalb的答案 –