Google Maps API V3自定义控件位置

时间:2010-05-29 07:53:17

标签: google-maps

我已阅读有关在地图上定位控件的文档(TOPTOP_LEFT等),但有没有办法制作自定义位置?例如:left: 20px; top: 200px; 我只想在top_left角落里将我的徽标和缩放控件放在徽标下方。 以及如何在导航控件中删除声像控件?我希望只有默认样式的缩放控件(未最小化)。 谢谢。

4 个答案:

答案 0 :(得分:28)

虽然问题相当陈旧,但观看次数仍接近3k,但似乎仍有兴趣 - 所以,这是我的解决方案:

包裹控件!

首先,我们必须找到容器元素,Google将控件置于其中。这取决于我们想要在地图上使用哪些控件。 Google不会对这些容器使用唯一的ID。但是所有的控件都有“gmnoprint”类的共同点。因此,只需使用“gmnoprint”计算元素即可。假设我们只想使用“ZoomControlStyle.SMALL”控件。它始终是“gmnoprint”的最后一个元素。

现在,我们可以简单地设计元素样式 - 对吗?不会。一旦缩放或调整地图大小,Google就会重置控件的样式。运气不好,但是:我们可以在控件周围包装一个容器并设置这个容器的样式!

使用jQuery,这是一个非常简单的任务:

$('div.gmnoprint').last().parent().wrap('<div id="newPos" />');

我们只需要确保,当我们尝试包装时,控件已完全加载。我猜这不完全是防弹的,但使用MapsEventListener“tilesloaded”做得非常好:

google.maps.event.addDomListener(map, 'tilesloaded', function(){
    // We only want to wrap once!
    if($('#newPos').length==0){
        $('div.gmnoprint').last().parent().wrap('<div id="newPos" />');
    }
});

查看http://jsfiddle.net/jfPZH/(无效,请参阅 2016年2月更新

当然,如果您不喜欢最初的闪烁并且想要更可靠的版本,您可以进行各种改进,例如fadeIn等:http://jsfiddle.net/vVLWg/(不工作,请参阅 2016年2月更新

所以,我希望你们中的一些人会觉得这很有用 - 玩得开心!

更新:使用此方法,您还可以定位任何其他控件(例如Drawing Library的控件)。你只需要确保选择合适的容器!这是一个修改过的示例:http://jsfiddle.net/jP65p/1/(不知何故仍然有效)

更新:截至2016年2月,Google似乎已经改变了地图控件的定位。这不会破坏我的解决方案。它只需要一些调整。所以这里有更新的小提琴:

简单:http://jsfiddle.net/hbnrqqoz/
想象:http://jsfiddle.net/2Luk68w5/

答案 1 :(得分:6)

您可以为徽标创建自定义控件,并将其添加到地图中以进行定位。您不能直接在常量之外设置控件的位置,但可以使用控件div上的填充来偏移位置。

http://code.google.com/apis/maps/documentation/javascript/controls.html

答案 2 :(得分:6)

这非常简单,只需将其添加到您的css文件中即可!

div.gmnoprint { padding-top: 50px; }

它将控制50px向下移动,没有黑客或任何东西!

答案 3 :(得分:-5)

panControl : false,

在您设置的ZoomControlsOptions中