我正在寻找一种使用Google Maps V3 API计算给定边界的缩放级别的方法,类似于getBoundsZoomLevel()V2 API.
这是我想要做的:
// These are exact bounds previously captured from the map object
var sw = new google.maps.LatLng(42.763479, -84.338918);
var ne = new google.maps.LatLng(42.679488, -84.524313);
var bounds = new google.maps.LatLngBounds(sw, ne);
var zoom = // do some magic to calculate the zoom level
// Set the map to these exact bounds
map.setCenter(bounds.getCenter());
map.setZoom(zoom);
// NOTE: fitBounds() will not work
Run Code Online (Sandbox Code Playgroud)
不幸的是,我无法将该fitBounds()方法用于我的特定用例.它适用于在地图上拟合标记,但它不适用于设置精确边界.这是我不能使用该fitBounds()方法的一个例子.
map.fitBounds(map.getBounds()); // not what you expect
Run Code Online (Sandbox Code Playgroud) 我正在使用这个布局的新Android地图V2:
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment"
map:cameraBearing="270"/>
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用newLatLngBounds(LatLngBounds bounds,int padding)方法来缩放和查看地图中的所有标记,但摄像机方位设置为0.
谷歌开发者文档中的描述说:
public static CameraUpdate newLatLngBounds(LatLngBounds bounds,int padding)(...).返回的CameraUpdate的轴承为0,倾斜度为0.(...)".
如何更改轴承值?
在调用newLatLngBounds之后,我尝试以编程方式设置新轴承,如下所示:
mMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, 100));
mMap.moveCamera(CameraUpdateFactory.newCameraPosition(new CameraPosition.Builder()
.target(mMap.getCameraPosition().target)
.zoom(mMap.getCameraPosition().zoom)
.bearing(270)
.build()));
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时,一些标记将不会显示出来.
我使用 MapKit.js 创建了以下地图,其中包含数百个自定义注释、聚类(黄点)和单击注释时弹出的标注。
当单击弹出链接时,我想要做的只是放大一步并在单击的注释上居中视图(在响应式上下文中)。
在我习惯的谷歌地图中,您只需通过地图的中心和缩放级别来定位地图即可。
在 MapKit.js 中,您使用中心/区域组合,老实说我无法理解它是如何工作的。
我不清楚官方文档,而且我无法找到真正有启发性的资源。
如果有人可以向我解释我们应该如何使用中心/区域组合来管理缩放级别,我将非常感激。
谢谢 :-)
[编辑]
这个中心/区域的事情对我来说仍然没有意义,所以我决定用缩放功能覆盖 MapKit.js。
感谢这篇文章,我成功地实现了缩放计算,这似乎没问题。
我现在需要实现设置的缩放操作。
还没有成功,这个数学的事情到现在为止^^
非常欢迎任何帮助:-)
功能:
function MapKitJsZoom(map) {
var LN2 = 0.6931471805599453; // ???
var WH = 256; // World Height
var WW = 256; // World Width
var MAX = 21; // Max zoom level
// GET CURRENT ZOOM.
var latToRad = function (lat) {
var sin = Math.sin(lat * Math.PI / 180);
var radX2 = Math.log((1 + sin) / (1 - …Run Code Online (Sandbox Code Playgroud)