Maps 谷歌地图GeoJSON-切换标记层?

Maps 谷歌地图GeoJSON-切换标记层?,maps,toggle,layer,geojson,markers,Maps,Toggle,Layer,Geojson,Markers,我通过调用PostGIS数据库返回了一些GeoJSON。我希望能够为每个功能添加一个标记,并能够切换不同类型的标记/功能。目前,我正在使用JavaScript为每个功能生成一个标记,根据类型将它们添加到数组中,然后根据需要查看数组设置show/hide以切换“layers” 这样做还可以,但我想知道新的GeoJSON功能是否提供了更好的方法。但就我所见,所有的特性都被添加到同一个数据层中,切换这些特性集需要设置样式,或者只是用新的、预过滤的GeoJSON替换 所以问题是,是否有可能有多个数据层,

我通过调用PostGIS数据库返回了一些GeoJSON。我希望能够为每个功能添加一个标记,并能够切换不同类型的标记/功能。目前,我正在使用JavaScript为每个功能生成一个标记,根据类型将它们添加到数组中,然后根据需要查看数组设置show/hide以切换“layers”

这样做还可以,但我想知道新的GeoJSON功能是否提供了更好的方法。但就我所见,所有的特性都被添加到同一个数据层中,切换这些特性集需要设置样式,或者只是用新的、预过滤的GeoJSON替换

所以问题是,是否有可能有多个数据层,并且可以轻松地从地图中添加/删除它们,或者我最好看看类似OpenLayers的东西

编辑:更多的研究表明这很简单

对于要启用的要素集合中的每种要素类型,创建一个新的数据对象。将所有相关功能添加到该数据对象

var datalayer = new google.maps.Data();
datalayer.addGeoJson(feature);
datalayer.setMap(mainmap);
然后将每个数据对象/要素类型存储为键值对。在toggle上,根据需要拉出相关数据对象和setMap:

var datalayer= featuretypesobj["feature type to toggle"];
datalayer.setMap(mymap); //or
datalayer.setMap(null);

也可以创建单独的层

var layer_1 = new google.maps.Data();
var layer_2 = new google.maps.Data();
然后填充它,例如使用json数据

layer_1.loadGeoJson('/path/to/data.json');
layer_2.loadGeoJson('/path/to/data2.json');
然后在地图上添加/删除它们

layer_1.setMap(map);
layer_2.setMap(map);
layer_1.setMap(null);
加上: var layer_1=新的google.maps.Data();应在地图初始化功能内完成,如下所示:

var map;

  var data_layer_for_ramps;



  function initialize() {

            map = new google.maps.Map(document.getElementById('map'), {
              zoom: 12,
              center: new google.maps.LatLng(-33.897907, 151.179138),//-33.8151,151.0032 
              mapTypeId: 'roadmap'
            });

            data_layer_for_ramps = new google.maps.Data();
        }