【问题标题】:How to show street numbers over the colored polygon in google maps?如何在谷歌地图的彩色多边形上显示街道编号?
【发布时间】:2020-09-06 09:54:08
【问题描述】:

在我的网络应用程序中,我们需要在谷歌地图图块上显示彩色多边形。我正在将数据作为 geoJson 添加到 Google 地图。示例 geoJson 如下所示。

  var geoJson = {
  "type": "FeatureCollection",
  "count": 1,
  "features": [
    {
      "id": 4813444,
      "type": "Feature",
      "geometry": {
        "type": "MultiPolygon",
        "coordinates": [
          [
            [
              [
                174.7195396833,
                -36.8564663333
              ],
              [
                174.7196494333,
                -36.8563847667
              ],
              [
                174.7196634333,
                -36.85637435
              ],
              [
                174.7196478167,
                -36.8563614167
              ],
              [
                174.7193567667,
                -36.8561201667
              ],
              [
                174.7192242167,
                -36.8562234167
              ],
              [
                174.7195123,
                -36.8564622333
              ],
              [
                174.7195278333,
                -36.8564751167
              ],
              [
                174.7195396833,
                -36.8564663333
              ]
            ]
          ]
        ]
      },
      "properties": {
        "color": "#232121"
      }
    }
  ]
}

如下添加Json到谷歌地图。

map.data.addGeoJson(geoJson);

使用下面的代码来设置彩色多边形的样式。

  map.data.setStyle(function(feature) {
    var color = feature.getProperty('color');
    return({
      fillColor: color,
      strokeWeight: 0
    });
  });

我的问题是,

由于颜色原因,这里的彩色瓷砖编号不清楚。 可以显示如下图。

使用this fiddle给我一个解决方案。

需要平铺如下所示。

非常感谢任何帮助或提示。

【问题讨论】:

  • 请说明投票关闭这个问题的人的原因
  • 你的问题太笼统了,这就是接近投票告诉你的。没有尝试这样做。您所说的tile numbers 是街道编号,是图像块的一部分。这也是asked before,那里的答案仍然有效。你不能。

标签: javascript reactjs google-maps google-maps-api-3 maps


【解决方案1】:

经过几天的努力,我找到了解决方案。

我发帖是因为这将对在这方面苦苦挣扎的人有所帮助。

我的方法,

  • 在地图上创建新的OverlayView
  • 为标签创建 StyledMapType
  • OverlayView上方设置为现有地图。
  • 为第五个firstChild设置zIndex样式。

下面是工作代码。

  var overlay = new google.maps.OverlayView();
  var labelsMapType = new google.maps.StyledMapType([
    {elementType: 'labels.text.fill', stylers: [{color: '#777777'}]},
    {elementType: 'labels.text.stroke', stylers: [{color: '#f5f1e6'}]},
    {
      stylers: [{
        visibility: 'off',
        color: '#17263c',
        strokeWeight: 2
      }]
    },

    {
      elementType: 'labels',
      stylers: [{
        visibility: 'on',
        color: '#17263c',
        strokeWeight: 2
      }]
    }
  ], {
    name: 'Labels'
  });    
  map.overlayMapTypes.push(labelsMapType);  
  overlay.setMap(map)
  setTimeout(function(){
   document.getElementById('map_canvas').firstChild.firstChild.firstChild.firstChild.firstChild.style.zIndex = 102;
}, 2000);

Working Fiddle.

希望这会对某人有所帮助。

【讨论】:

  • 当 Google 更改地图的 HTML 结构中的某些内容时,很容易彻底失败,因为它使用未记录的方式来实现在其产品的当前状态下不应该实现的目标。
  • @MrUpsidown 完全同意你的看法。但是没有办法使用 Google Map API 来实现问题中的内容。我知道这是一个愚蠢的答案。但它是有效的,并且认为会帮助那些想要在问题中做些什么的人。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-06
  • 1970-01-01
  • 2011-01-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多