如何使用谷歌地图 API 设置图层顺序

How to set up the layer order with Google Maps API?

本文关键字:图层 顺序 设置 API 何使用 谷歌地图      更新时间:2023-09-26

我正在开发一个网络制图网站(使用谷歌地图API 3.0和javascript),它结合了WMS图层和地面叠加层(上传的栅格),显示在谷歌地图的顶部。该软件运行良好,除了我在控制图层的绘制顺序时遇到问题。我想将 wms 图层(NRCS 土壤图层)显示在自定义光栅图像的顶部,并将谷歌地图作为基础图层。目前,wms 图层按预期显示在 google 地图图层的顶部,但被栅格图层覆盖。问题是:谷歌地图 API 是否允许控制图层的显示顺序(在我的例子中,矢量图层位于谷歌地图顶部的栅格图层顶部)?我尝试设置显示顺序的zindex,但这不起作用(但我很容易错过一些东西)。

WMS 图层也是栅格,而不是矢量 - 我假设您正在使用 ImageMapType 和 GroundOverlay?

撇开这一点不谈,一旦图层被添加到地图中,目前就无法控制图层的排序。

作为黑客(未经测试),您可能希望按照您希望绘制它们的顺序添加图层,并在...我认为这可能会起作用(再次,未经测试)。

可选)。我如何订购它。

首先,我在对象中创建这样的图层。

        layer = {};
        layer.nrcs_soils= new google.maps.ImageMapType({
            getTileUrl: function (coord, zoom) {
                return getTileWmsUrl(coord, zoom, "nrcs_soils");
            },
            tileSize: new google.maps.Size(256, 256),
            opacity: 1,
            name:'nrcs_soils',
            alt:{
                layer_name:'nrcs_soils'
                ,order   : 0
            },
            isPng: true
        });

之后,我创建简单的函数将图层添加到地图。

add_layer = function(layer_name){
   //-- get order from object layer
   var order_layer =layer[layer_name].alt.order;
   map.overlayMapTypes.insertAt(order_layer ,layer[layer_name]);

}

只需从对象图层上的设置中调用此函数即可添加和排序图层。

add_layer("nrcs_soils");