正如标题所说,我有谷歌地图v2工作,但它不会放大。蓝点似乎显示我的位置,但我也显示了整个世界。我需要一张禁用所有内容的地图。您无法放大或缩小,您无法使用手势并且位置固定在您所在位置的某个距离。结果这是一个非常大的问题。我正在使用导航抽屉,这是附加到它的片段之一+ xml:
public class MapsPage extends Fragment {
Context mContext;
private SupportMapFragment mapFrag;
private GoogleMap gMap;
private double getLat, getLng;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.map_page, container, false);
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
FragmentManager fm = getChildFragmentManager();
mapFrag = (SupportMapFragment) fm.findFragmentById(R.id.map);
if (mapFrag == null) {
mapFrag = SupportMapFragment.newInstance();
fm.beginTransaction().replace(R.id.map, mapFrag).commit();
}
}
@Override
public void onResume() {
super.onResume();
if (gMap == null) {
gMap = mapFrag.getMap();
gMap.getUiSettings().setZoomControlsEnabled(false);
gMap.getUiSettings().setCompassEnabled(false);
gMap.getUiSettings().setMyLocationButtonEnabled(true);
gMap.getUiSettings().setAllGesturesEnabled(false);
gMap.setMyLocationEnabled(true);
getLat = gMap.getMyLocation().getLatitude();
getLng = gMap.getMyLocation().getLongitude();
final LatLng myLocation = new LatLng(getLat, getLng);
CameraPosition cPosition = new CameraPosition.Builder()
.target(myLocation)
.zoom(16)
.bearing(10)
.tilt(30)
.build();
gMap.animateCamera(CameraUpdateFactory.newCameraPosition(cPosition));
}
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState){
super.onViewCreated(view, savedInstanceState);
}
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
}
public void setupMap(){
Log.d("SUCCESS" , "SUCCESS");
}
布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:id="@+id/map"
android:layout_height="match_parent"
android:layout_width="match_parent"/>
</RelativeLayout>
我学会了把我的代码放在onResume中,我不记得为什么但如果有更好的方法请告诉我。现在要加载地图我必须关闭然后再打开手机屏幕。显然我会在适当的时候改变它,我只是想让事情先发挥作用。
我在logcat中遇到两个错误,一个是关于活动暂停时没有恢复的错误。当我从onResume中获取所有内容时,我确信我可以解决这个问题,所以我认为这是无关的:
01-03 09:02:38.519: E/ActivityThread(16906): Performing pause of activity that
is not resumed: {package.name.and.Activity.class}
我没有在我的活动类中调用onResume方法,这个方法处理碎片,所以它可能与此问题无关(我认为)。
另一个,告诉我找不到Google Play服务库。我为此搜索了StackOverflow,并且在使用setMyLocationEnabled导致这种情况时似乎存在一个错误,或者有些人认为,其他人则没有。我现在忽略它,因为地图正在加载,我的位置正在显示,它只是不会放大到我设置的级别。
01-03 09:02:44.824: E/GooglePlayServicesUtil(16906): The Google Play services
resources were not found. Check your project configuration to ensure that
the resources are included.
如何修复缩放或代码搞砸导致的任何想法?非常感谢您的帮助,提前谢谢。
编辑:我已经使用了LocationManager来让地图放大到适当的位置,这有效,它不如蓝点那么准确。它结束了我的街道,但没有任何东西,但没有放大蓝点,我将继续努力。
答案 0 :(得分:0)
Update res/layout/activity_main.xml and replace the entire contents with this....
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment"/>
甚至尝试将其设为真实
gMap.getUiSettings().setZoomControlsEnabled(true);
答案 1 :(得分:0)
我最后通过调用LocationManager并基于它来设置服务来修复它。所以我可以得到正确的LatLng设备。它每次都返回null。现在它显示位置或最后已知位置。这不是一个完美的实现,但地图现在放大。