将相机重定向到当前位置 Google Maps API v2

Posted

技术标签:

【中文标题】将相机重定向到当前位置 Google Maps API v2【英文标题】:Redirect camera to current position Google Maps API v2 【发布时间】:2015-03-13 01:18:20 【问题描述】:

我正在尝试将相机移动到我当前的位置,我尝试过的是:

我的 onCreateView 看起来像:

 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
        View inflatedView = inflater.inflate(R.layout.fragment_photos, container, false);

        try 
            MapsInitializer.initialize(getActivity());
         catch (Exception e) 
            // TODO handle this situation
        

        mMapView = (MapView) inflatedView.findViewById(R.id.mapView);
        mMapView.onCreate(mBundle);


        setUpMapIfNeeded(inflatedView);

        return inflatedView;
    

我的 onCreate 看起来像:

@Override
public void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    mBundle = savedInstanceState;

而且我有一个名为 setUpMapIfNeeded 的方法来膨胀视图...我尝试过用我的mMap.getMyLocation() 创建一个位置,然后创建两个双打 latlng 他们are = location.getLatitude and Longitude,我尝试使用我的位置创建一个 cameraZoomIn,但它不起作用。

private void setUpMapIfNeeded(View inflatedView) 
    if (mMap == null) 
        mMap = ((MapView) inflatedView.findViewById(R.id.mapView)).getMap();
        mMap.getUiSettings().setMyLocationButtonEnabled(true);
        mMap.setMyLocationEnabled(true);

        Location location = mMap.getMyLocation();
        double lat =  location.getLatitude();
        double lng = location.getLongitude();
        CameraUpdate cameraUpdate = CameraUpdateFactory.zoomTo(location, 10);
        mMap.animateCamera(cameraUpdate);

        if (mMap != null) 
            setUpMap();
        
    

setUpMap 方法

    private void setUpMap() 
        mMap.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("PewPew"));
        // latitude and longitude
        double latitude = 17.385044;
        double longitude = 78.486671;

// create marker
        MarkerOptions marker = new MarkerOptions().position(new LatLng(latitude, longitude)).title("Pew Pew");

// Changing marker icon
        marker.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher));

// adding marker
        mMap.addMarker(marker);

    

希望你能帮助你解决这个问题。

谢谢。

【问题讨论】:

您是否尝试打印您的 lat 和 lng 并检查它们是否分配了正确的值?我也不确定 setUpMap(); 方法是什么做...? @Berťák 在这种方法中,我正在创建标记等...在我的地图上出现了我实际所在的蓝色圆圈... 【参考方案1】:

GoogleMap.getLocation 已弃用,您应该使用位置服务:

LocationManager mng = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Location location = mng.getLastKnownLocation(mng.getBestProvider(new Criteria(), false));

double lat = location.getLatitude();
double lon = location.getLongitude();

CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(new LatLng(lat, lon), 10);
mMap.animateCamera(cameraUpdate);

【讨论】:

@JoanColmenero 尝试:getActivity().getSystemService() 如果您的代码在片段中。【参考方案2】:

这是我缩放的方式

LatLng a = new LatLng(gps.getLatitude(), gps.getLongitude());
map.animateCamera(CameraUpdateFactory.newLatLngZoom(a, 10));

希望对你有帮助。

【讨论】:

什么是gps.getLatitude?你能解释一下你的代码吗? 啊,对不起,gps 是我自己的课程,就像 location.getLatitude();但我看到你已经处理了这个问题。

以上是关于将相机重定向到当前位置 Google Maps API v2的主要内容,如果未能解决你的问题,请参考以下文章

Google Maps API 文本搜索位置

Google Maps API:获取当前位置 iOS 的坐标

Flutter 中的 Google Maps 相机位置更新问题

使相机随着位置的变化而移动(Google Maps Api)

Google Maps API - 意外重定向

如何在 Google Maps v2 上将标记添加到当前位置?