【问题标题】:Android : Setting default zoom level for an area with com.google.android.gms.maps.GoogleMapAndroid:使用 com.google.android.gms.maps.GoogleMap 为区域设置默认缩放级别
【发布时间】:2015-07-22 14:02:58
【问题描述】:

我正在开发一个 Android 应用程序,我想在其中向用户展示他所在位置的附近区域。不幸的是,当我从 GoogleMaps 获取地图数据时,它向我展示了整个世界以及当前位置上的一个点,我需要继续放大。我尝试将缩放系数设置为 100,但这并没有改变任何东西。有什么我做错了吗。请告诉我。

这是我的代码:

   public class MapsActivitiyFragment extends FragmentActivity implements LocationListener {

   static GoogleMap googleMap;

    LocationManager locationManager;
    String provider;
    LatLng myPosition;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_maps_activitiy);

        SupportMapFragment fm = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.googleMap);
        googleMap = fm.getMap();
        googleMap.setMyLocationEnabled(true);
        locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
        Criteria criteria = new Criteria();
        provider = locationManager.getBestProvider(criteria, true);
        Location location = locationManager.getLastKnownLocation(provider);
        if (location != null) {
            circleDraw(location.getLatitude(),location.getLongitude());
            zoomIn(location.getLatitude(), location.getLatitude());
            onLocationChanged(location);

        }
    }

    @Override
    protected void onResume() {
        super.onResume();
        locationManager.requestLocationUpdates(provider, 400, 1, this);
    }

    public void circleDraw(double i, double ii) {

        googleMap.addCircle(new CircleOptions().center(new LatLng(i, ii))
                .radius(10000).strokeColor(Color.BLACK).strokeWidth(5)
                .fillColor(Color.argb(50, 238, 116, 116)));
    }

    public void zoomIn(double Lat, double Long) {

        CameraUpdate center = CameraUpdateFactory.newLatLng(new LatLng(Lat,
                Long));
        CameraUpdate zoom = CameraUpdateFactory.zoomTo(15);
        googleMap.moveCamera(center);
        googleMap.animateCamera(zoom);

    }

    @Override
    public void onLocationChanged(Location location) {
        googleMap.clear();// clean the map
        Toast.makeText(this, "Location Changed", Toast.LENGTH_SHORT).show();
        double latitude = location.getLatitude();
        double longitude = location.getLongitude();
        myPosition = new LatLng(latitude, longitude);

        circleDraw(latitude, longitude);
        zoomIn(latitude, longitude);
    }

    @Override
    public void onProviderDisabled(String arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onProviderEnabled(String arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
        // TODO Auto-generated method stub

    }

}

更新

图片:

【问题讨论】:

    标签: android google-maps gps location


    【解决方案1】:

    请记住,onLocationChanged 会在您更改位置时调用。如果你站着不动,你可能会遇到问题,当你在模拟器上工作时,你也会遇到很多问题。

    您的代码看起来不错。在您设置地图的地方设置缩放。不要在onLocationChanged 中设置它在你的代码中我会在onCreate 中设置缩放

    // 编辑

    LatLng center = new LatLng(location.getLatitude(), location.getLongitude());
    CameraPosition.Builder cameraPosition = new CameraPosition.Builder();
    cameraPosition.target(center);
    cameraPosition.zoom((int)configuration.get("zoom"));
    map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition.build()));
    

    【讨论】:

    • 我需要点击右上角的按钮来放大还是自动放大??
    • 如果您在应用程序启动时设置地图,那么它将是自动的
    • 我按照你说的做了,还有一些新的代码来画一个圆圈。两者似乎都不起作用。我已经编辑了我的主要帖子,请你看一下。
    • 你有没有得到zoomIn 方法。将一些日志添加到if 和此方法并检查。看起来你没有位置,所以它不知道应该放大哪个位置。我认为你 location 为空
    • 不,显示位置,一个蓝点,如果我继续放大,它会显示正确的位置....只是该死的相机没有移动或动画以放大坐标。如果位置为空,我不会看到蓝点。我应该给你截图吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    • 2011-10-02
    • 2019-01-10
    • 2012-12-05
    • 2017-12-03
    • 1970-01-01
    相关资源
    最近更新 更多