【问题标题】:Android Google Maps v2 - set zoom level for myLocationAndroid Google Maps v2 - 为 myLocation 设置缩放级别
【发布时间】:2012-12-05 15:04:17
【问题描述】:

是否可以使用新的 Google Maps API v2 更改 myLocation 的缩放级别?

如果您设置GoogleMap.setEnableMyLocation(true);,您会在地图上找到一个按钮来查找您的位置。

如果您单击它,那么地图会将您带到您的位置并将其放大到某个级别。我可以将此缩放更改为更少或更多吗?

【问题讨论】:

  • 您知道 mylocation 按钮的缩放级别吗?我想要那个值。

标签: android google-maps-mobile google-maps-android-api-2


【解决方案1】:

您是否可以在单击时使用默认的 myLocation 标记更改它,这是值得怀疑的。但是,如果您希望该应用在找到您的位置后自动放大您的位置,我会查看我对this question的回答

请注意,我提供的答案并没有放大,但是如果您将 onLocationChanged 方法修改为如下所示,则可以选择您喜欢的任何缩放级别:

@Override
public void onLocationChanged(Location location) {
    if( mListener != null ) {
        mListener.onLocationChanged( location );

        //Move the camera to the user's location and zoom in!
        mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(location.getLatitude(), location.getLongitude()), 12.0f));
    }
}

【讨论】:

    【解决方案2】:

    你也可以使用:

    mMap.animateCamera( CameraUpdateFactory.zoomTo( 17.0f ) );    
    

    只需将缩放值更改为最小值 = 2.0 和最大值 = 21.0 之间的任何所需值。

    API 警告说,并非所有位置的图块都处于或接近最大缩放值。

    有关CameraUpdateFactory 中可用的缩放方法的更多信息,请参阅this

    【讨论】:

    • 默认缩放级别是多少??
    • 14 是默认缩放级别
    【解决方案3】:

    带有位置 - 在新的 GoogleMaps SDK 中:

    mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(chLocation,14));
    

    【讨论】:

    • 许多其他答案都引用了 newLatLngZoom() 和 zoom() 之间是否有区别?在应用程序中,从最终用户的角度来看,这些看起来是一样的。
    【解决方案4】:

    这里是approximate zoom levels 以及它们的作用:

    1: World
    5: Landmass/continent
    10: City
    15: Streets
    20: Buildings
    

    所以你可以做这样的事情来缩放到街道水平例如(注意下面的“15f”是街道水平):

     override fun onMapReady(googleMap: GoogleMap?) {
        googleMap?.mapType = GoogleMap.MAP_TYPE_NORMAL
        googleMap?.addMarker(MarkerOptions()
                .position(LatLng(37.4233438, -122.0728817))
                .title("cool place")
    
                .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ROSE)))
    
        googleMap?.animateCamera(CameraUpdateFactory.newLatLngZoom(LatLng(37.4233438, -122.0728817), 15f))
    

    注意:只是为了让您知道不同的位置可以有不同的最大缩放级别。如果您想获得最大或最小缩放级别,请尝试使用googleMap.maxZoomLevel

    【讨论】:

      【解决方案5】:

      与 HeatfanJohn 的解决方案略有不同,我将缩放相对于当前缩放级别进行更改:

      // Zoom out just a little
      map.animateCamera(CameraUpdateFactory.zoomTo(map.getCameraPosition().zoom - 0.5f));
      

      【讨论】:

        【解决方案6】:

        在 onMapReady() 方法中

        将 zoomLevel 更改为任何所需的值。

        float zoomLevel = (float) 18.0;
        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, zoomLevel));
        

        【讨论】:

          【解决方案7】:

          你只需要在 maps_activity.xml 中写一行

          map:cameraZoom="13"
          

          希望这能解决你的问题...

          【讨论】:

            【解决方案8】:

            你可以使用

                CameraUpdate center = CameraUpdateFactory.newLatLng(new LatLng(location.getLatitude(), location.getLongitude()));
                CameraUpdate zoom = CameraUpdateFactory.zoomTo(12);
            

            【讨论】:

              【解决方案9】:

              即使我最近也有相同的查询....有些上面提到的 setmaxzoom 或 map:cameraZoom="13" 都不起作用 所以我发现我使用的依赖是旧的 请确保您对谷歌地图的依赖是正确的 这是最新的使用这个

              compile 'com.google.android.gms:play-services:11.8.0' 
              

              【讨论】:

                【解决方案10】:

                mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(currentPlace,15)); 这是不会有动画效果的。

                【讨论】:

                  【解决方案11】:

                  我尝试使用“mMap.animateCamera(CameraUpdateFactory.zoomTo(17.0f));”但这对我不起作用。所以我用这个动画在开始时放大。

                  LatLng loc = new LatLng(33.8688, 151.2093);
                  mMap.addMarker(new MarkerOptions().position(loc).title("Sydney"));
                  mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(loc, 18), 5000, null);
                  

                  【讨论】:

                    【解决方案12】:
                    Location locaton;
                    double latitude = location.getlatitude;
                    double longitude = location.getlongitude;
                    

                    如果你想保存缩放或一直获取它,你只需要调用以下代码

                    int zoom = mMap.getCameraPosition().zoom;
                    
                    //To set that just use
                    
                    mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(getlatitude(), getlongitude),zoom);
                    

                    【讨论】:

                      【解决方案13】:

                      上面的大多数答案要么已弃用,要么通过保留当前的纬度和经度进行缩放,并且不会缩放到您想要的确切位置。将以下代码添加到您的 onMapReady() 方法中。

                      @Override
                      public void onMapReady(GoogleMap googleMap) {
                          //Set marker on the map
                          googleMap.addMarker(new MarkerOptions().position(new LatLng(0.0000, 0.0000)).title("Marker"));
                          //Create a CameraUpdate variable to store the intended location and zoom of the camera
                          CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(new LatLng(0.0000, 0.0000), 13);
                          //Animate the zoom using the animateCamera() method
                          googleMap.animateCamera(cameraUpdate);
                      }
                      

                      【讨论】:

                        猜你喜欢
                        • 2013-06-04
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2014-01-15
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2013-08-27
                        相关资源
                        最近更新 更多