Android Google地图(SupportMapFragment)未在视图寻呼机片段中显示标记
您好,我已经为google地图实施了Android Google地图(SupportMapFragment)未在视图寻呼机片段中显示标记,android,google-maps,android-fragments,Android,Google Maps,Android Fragments,您好,我已经为google地图实施了SupportMapFragment,并尝试在google地图上设置我的位置按钮和标记(SupportMapFragment),但它没有显示,但此代码正在活动中工作 请查找以下代码以了解更多信息 public class MapsFragment extends Fragment implements OnMapReadyCallback { private static View view; private SupportMapFragmen
SupportMapFragment
,并尝试在google地图上设置我的位置按钮和标记(SupportMapFragment
),但它没有显示,但此代码正在活动中工作
请查找以下代码以了解更多信息
public class MapsFragment extends Fragment implements OnMapReadyCallback {
private static View view;
private SupportMapFragment mMap;
private static Double latitude, longitude;
GoogleMap gMap;
private static final int PERMISSION_REQUEST_CODE = 1;
public MapsFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_map, container, false);
latitude = 26.78;
longitude = 72.56;
FragmentManager fm = getChildFragmentManager();
mMap = (SupportMapFragment) fm.findFragmentById(R.id.map);
if (mMap == null) {
mMap = SupportMapFragment.newInstance();
fm.beginTransaction().replace(R.id.map, mMap).commit();
mMap.getMapAsync(this);
}
return view;
}
@Override
public void onMapReady(GoogleMap map) {
gMap = map;
gMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new
LatLng(49.39, -124.83), 20));
gMap.addMarker(new MarkerOptions()
.position(new LatLng(37.7750, 122.4183))
.title("San Francisco")
.snippet("Population: 776733"));
gMap.getUiSettings().setZoomGesturesEnabled(true);
if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_GRANTED) {
gMap.setMyLocationEnabled(true);
} else {
requestPermission();
}
}
}
试试这个 public void drawMarker(double lat,double lon)
{
if (mMap != null) {
MarkerOptions marker = new MarkerOptions().position(new LatLng(lat, lon)).title(" Maps Tutorial").snippet("Android Ruler");
marker.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
// Moving Camera to a Location with animation
CameraPosition cameraPosition = new CameraPosition.Builder().target(new LatLng(latitude, longitude)).zoom(12).build();
mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
mMap.addMarker(marker);
}
}
请参阅此处了解详细信息:-使用
setMyLocation()时,可能您还没有权限代码>。试试这个-
if (ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_DENIED){
FragmentCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
PERMISSION_REQUEST);
}
处理结果:
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == PERMISSION_REQUEST && grantResults.length > 0) {
if (permissions[0].equals(Manifest.permission.ACCESS_FINE_LOCATION)) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED){
//Calling the function here
gMap.setMyLocationEnabled(true);
}
else
Toast.makeText(context, "You need to provide " +
"permission to find the location", Toast.LENGTH_LONG).show();
}
}
}
我在viewpager上也遇到了同样的问题,我使用onmappled回调解决了这个问题。试着这样做
public class MapsFragment extends Fragment implements OnMapReadyCallback,
GoogleMap.OnMapLoadedCallback {
@Override
public void onMapReady(GoogleMap map) {
gMap = map;
gMap.setOnMapLoadedCallback(this);
}
//map loaded callback
@Override
public void onMapLoaded() {
// add your marker now
gMap.addMarker(new MarkerOptions()
.position(new LatLng(37.7750, 122.4183))
.title("San Francisco")
.snippet("Population: 776733"));
}
}
从中替换代码
if **(mMap != null)** {
mMap = SupportMapFragment.newInstance();
fm.beginTransaction().replace(R.id.map, mMap).commit();
mMap.getMapAsync(this);
}
其中fragment是viewPagerFragment的实例
在xml中
<LinearLayout
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="250dp" />
将此作为片段活动,而不是片段。是的地图显示Bajirao Shindei am在viewpaser和appCompactActivity jay droider中工作
<LinearLayout
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="250dp" />