Polymer Google 地图 - 绘制形状

Polymer Google Map - Drawing Shapes

我使用 Polymer 的 Google 地图已有一段时间了,对结果非常满意。最近我遇到了一些用例,在这些用例中,在地图上的地图标记之间绘制线条和形状会很有用。 Google 关于此的文档非常适合地图 Javascript API,但经过一些研究后,我无法找到任何关于在 Polymer 中绘制形状的参考 Google 没有混搭 Polymer 和非 Polymer 的地图 Google 地图功能。是否有 "pure Polymer" 绘制这些形状的方法?

我仍在使用 Polymer 1.x,但我愿意升级到 2.x。

谢谢!

目前没有可让您在 Google 地图上绘制形状的聚合物元素。但是,您可以使用 JavaScript 访问地图对象并绘制形状。例如,您可以包含 google-map 元素:

<google-map
  id="map"
  zoom="3"
  latitude="25"
  longitude="0"
  map-type="hybrid"></google-map>

然后一些 JavaScript 通过访问 DOM 中地图元素上的 map 对象在地图上绘制:

function drawCircle(center, radius) {
  new google.maps.Circle({
    strokeColor: '#FFFFFF',
    strokeOpacity: 0.8,
    strokeWeight: 2,
    fillColor: '#FFFFFF',
    fillOpacity: 0.3,
    map: document.querySelector('#map').map,
    center: center,
    radius: radius
  });
}

如果需要,您甚至可以将此 JavaScript 转换为聚合物组件。

你可以绑定 "map" 属性 -> 添加观察者 -> 做你想做的。

这是为了确保 javascript 仅在创建 google 地图时尝试在 google 地图上绘制形状。

"map" 属性 一开始为空。创建地图后,观察者调用您的函数。

像这样:

<google-map map={{myMapObject}} id="mymapid" zoom="3" latitude="25" longitude="0" map-type="hybrid"></google-map>
<script>
Polymer({
    is: 'mytemplatename',
    properties: {
        myMapObject: {
            observer: 'drawCircles'
        }
    },
    drawCircles: function(){
       new google.maps.Circle({
         strokeColor: '#FFFFFF',
         strokeOpacity: 0.8,
         strokeWeight: 2,
         fillColor: '#FFFFFF',
         fillOpacity: 0.3,
         map: document.querySelector('#mymapid').map,
         center: center,
         radius: radius
       });
    }
});
</script>