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工作室中手动设置两个标记,但我想要一个标记从当前位置获取位置。 任何帮助,或任何想法?
答案 0 :(得分:1)
首先要尝试这个:
googleMap.setMyLocationEnabled(true);
这将显示页面右上角的箭头,如果已启用,将显示您的位置。 此按钮还将触发google api的 onMyLocationButtonClick()功能。
然后获取当前位置信息:
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