【问题标题】:Stroke appears bigger and bigger each time circle icon scale is reduced每次缩小圆圈图标比例时,笔画会越来越大
【发布时间】:2017-02-03 16:13:52
【问题描述】:

我创建了一个缩放等于 4 的新地图:

  map = new google.maps.Map(document.getElementById('map'), {
    zoom: 4,
    center: new google.maps.LatLng(39.9526, -98.5795),
    mapType: 'terrain'
  });

我监听 zoom_changed 事件,以便我可以用新的比例重新绘制我的标记:

    google.maps.event.addListener(map, 'zoom_changed', function () {
    var zoom = map.getZoom();
    $log.debug("zoom: " + zoom);

我在这里创建我的新图标:

 var greenMarkerIcon = {
    path: google.maps.SymbolPath.CIRCLE,
    fillOpacity: 1,
    fillColor: "green",
      strokeWeight: 1,
    scale: map.getZoom()
  }

当我放大时,一切看起来都很可爱。当我向下钻取时,图标的比例会变大。缩小是问题所在:

Click here for image of icon after reducing scale

圆圈的边框越来越大。我为 icon.strokeWeight 属性添加了一个调试语句,它始终保持为 1。我正在吹走我所有的旧标记并重新绘制它们,所以我不知道为什么单个标记 strokeWeight 显得更大。

有什么想法吗?

【问题讨论】:

  • 请提供一个minimal reproducible example 来证明您的问题。
  • 我在您的问题中没有看到任何会改变图标大小(或影响笔画)的代码。您确定要更改图标,而不仅仅是用新图标覆盖它吗(如果新图标较大,您将无法看到较小的图标)。

标签: javascript google-maps-api-3 icons google-maps-markers


【解决方案1】:

我假设您想在地图缩放时更改标记图标比例,并且标记应该更小/更大而不改变笔划。然后您只需要更改图标比例并将其设置为标记:

google.maps.event.addListener(map, 'zoom_changed', function () {
  var zoom = map.getZoom();
  console.log("zoom: " + zoom);
  greenMarkerIcon.scale = (zoom + 1) * scale; // +1 is for avoiding zoom=0, scale is initial scale of icon
  marker.setIcon(greenMarkerIcon);
});

查看此示例:http://jsfiddle.net/dUMFW/108/

【讨论】:

    【解决方案2】:

    提供的答案是正确的。

    我发现我做错了什么。每次用户单击缩放按钮时,我都会创建一个新标记。标记应该只创建一次,并且关联的图标应该在缩放时更改。

    谢谢。

    【讨论】:

      猜你喜欢
      • 2017-05-14
      • 2011-12-14
      • 2020-06-06
      • 2013-04-23
      • 2014-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-02
      相关资源
      最近更新 更多