我想在嵌入式Google Map(API v3)上绘制一组点.除非缩放级别太低(即缩小太多),否则我希望能够容纳所有点.我的方法是这样的:
var bounds = new google.maps.LatLngBounds();
// extend bounds with each point
gmap.fitBounds(bounds);
gmap.setZoom( Math.max(6, gmap.getZoom()) );
Run Code Online (Sandbox Code Playgroud)
这不起作用.如果在fitBounds之后直接调用,则最后一行"gmap.setZoom()"不会更改地图的缩放级别.
有没有办法获得边界的缩放级别而不将其应用于地图?解决这个问题的其他想法?
我正在地图上绘制一系列标记(使用地图api的v3).
在v2中,我有以下代码:
bounds = new GLatLngBounds();
... loop thru and put markers on map ...
bounds.extend(point);
... end looping
map.setCenter(bounds.getCenter());
var level = map.getBoundsZoomLevel(bounds);
if ( level == 1 )
level = 5;
map.setZoom(level > 6 ? 6 : level);
Run Code Online (Sandbox Code Playgroud)
这样做可以确保地图上始终显示适当的详细程度.
我试图在v3中复制此功能,但setZoom和fitBounds似乎没有合作:
... loop thru and put markers on the map
var ll = new google.maps.LatLng(p.lat,p.lng);
bounds.extend(ll);
... end loop
var zoom = map.getZoom();
map.setZoom(zoom > 6 ? 6 : zoom);
map.fitBounds(bounds);
Run Code Online (Sandbox Code Playgroud)
我尝试过不同的排列(例如,在setZoom之前移动fitBounds)但是我对setZoom的处理似乎不会影响地图.我错过了什么吗?有没有办法做到这一点?
我正在使用fitBounds()在我的地图上设置缩放级别,也包括当前显示的所有标记.但是,当我只有一个标记可见时,缩放级别为100%(...我认为缩放级别为20 ......).但是,我不希望它被放大,因此用户可以调整标记的位置而不必缩小.
我有以下代码:
var marker = this.map.createMarker(view.latlng, this.markerNumber);
this.map.bounds.extend(view.latlng);
this.map.map.setCenter(this.map.bounds.getCenter());
this.map.map.fitBounds(this.map.bounds);
if (this.markerNumber === 1) {
this.map.map.setZoom(16);
}
this.markerNumber++;
Run Code Online (Sandbox Code Playgroud)
其中this.map.bounds先前定义为:
this.map.bounds = new google.maps.LatLngBounds();
Run Code Online (Sandbox Code Playgroud)
但是,我遇到的问题是this.map.map.setZoom(16);如果我使用该行不起作用this.map.map.fitBounds(this.map.bounds);,但是,我知道这行代码是正确的,因为当我注释掉fitBound()行时,setZoom()神奇地开始运行.
我有什么想法解决这个问题?我正在考虑设置一个maxZoom级别作为替代,如果我不能让它工作.
javascript google-maps google-maps-api-3 google-maps-markers