【问题标题】:Changing google-maps polygon color/fill on click单击更改 google-maps 多边形颜色/填充
【发布时间】:2011-08-21 10:07:09
【问题描述】:

我有以下代码已传递给我并创建多边形:

<script type="text/javascript">

var map;
function initialize() {
    var myLatlng = new google.maps.LatLng(-36.42,145.710);
    var myOptions = { zoom: 15, center: myLatlng, mapTypeId: google.maps.MapTypeId.SATELLITE }

    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

    // Create polygon overlays from site data in file data.js included above
    // Overlays are defined by a set of coordinates
    // We will also be setting up an infowindow with the site name
    // The infowindow will be designed to point to the 'center' of each site so we calculate the 'centroid' of each overlay in the code below as well
    var overlay;
    var number_of_overlays = 29;

    for (var k = 0; k < number_of_overlays; k++) {
        var pk = primaryKeys[k];
        var verticesArray = new Array((eval("siteVertices_" + pk).length) / 2);
        var m = 0;
        var centroidLat = 0;
        var centroidLng = 0;

        for (var n = 0; n < eval("siteVertices_" + pk).length; n += 2)
        {
            verticesArray[m] = new google.maps.LatLng(eval("siteVertices_" + pk)[n], eval("siteVertices_" + pk)[n + 1]);
            m = m + 1;
            centroidLat += eval("siteVertices_" + pk)[n];
            centroidLng += eval("siteVertices_" + pk)[n + 1];
        }

        var cent = new google.maps.LatLng(centroidLat/m, centroidLng/m);

        var overlay = new google.maps.Polygon({
            paths: verticesArray,
            strokeColor: "#FF0000",
            strokeOpacity: 0.5,
            strokeWeight: 1,
            fillColor: "#FF0000",
            fillOpacity: 0.20,
            position: cent,
            map:map });

        attachInfoWindow(overlay, k);
    }
}

function attachInfoWindow(overlay, number) {
  var infowindow = new google.maps.InfoWindow({ content: siteNames[number] });
  google.maps.event.addListener(overlay, 'mouseover', function() { infowindow.open(map, overlay); });
  google.maps.event.addListener(overlay, 'mouseout', function() { infowindow.close(map, overlay); });
}
</script>

代码使用data.js,看起来很像这样:

var primaryKeys = [1, 2, 3];

var siteNames = ['area_1', 'area_2', 'area_3'];

var siteVertices_1 = [-36.42716187286321, 145.7040742777405, -36.426678448311414, 145.70408500657655, -36.42786542285944, 145.70926703439332, -36.428335891385544, 145.70912755952455];
var siteVertices_2 = [-36.42664391787113, 145.70415474401094, -36.42616912275949, 145.70439077840425, -36.42733884002687, 145.70942796693421, -36.427804995502726, 145.70927239881135];
var siteVertices_3 = [-36.42611732675347, 145.7044176004944, -36.42570295746138, 145.70467509255982, -36.42684246769319, 145.70961035714723, -36.42730862614943, 145.7094601534424];

目前,多边形是使用红色轮廓和填充创建的。我想添加一个行为,以便当用户单击多边形时,多边形变为“活动”并且轮廓和填充变为黄色。

我不擅长 javascript,不知道如何去做。我知道我需要为“点击”添加一个监听器,但除此之外我被卡住了。援助将不胜感激! MTIA。

【问题讨论】:

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


    【解决方案1】:

    我认为您必须通过调用此方法将新的PolygonOptions 传递给多边形对象:

    setOptions(options:PolygonOptions).
    

    您可以在此处查看不同的选项:http://code.google.com/apis/maps/documentation/javascript/reference.html#PolygonOptions

    在此 PolygonOptions 中,您可以指定您希望 Polygon 填充的颜色以及您可能想要更改的所有其他内容。

    【讨论】:

      【解决方案2】:

      Kaspar Vesth 快到了。是的,您必须调用 setOptions。但请记住,您不必每次都传递所有选项,只传递您想要更改的选项就足够了。例如:

      myPolygon.setOptions({strokeWeight: 2.0, fillColor: 'green'});
      // polygon is clicked
      myPolygon.setOptions({strokeWeight: 6.0});
      

      【讨论】:

      • 我们可以将填充颜色作为渐变吗?谢谢
      • @FarzadCyrus:不。 fillColor 仅采用 CSS 颜色。看看 PolygonOptions developers.google.com/maps/documentation/javascript/…
      • 谢谢 :) 但我之前看过该页面,但仍然想知道一些实际上是使用 HTML5/CSS3/JS 等前端技术构建的混合移动应用程序,其中包括 Google 地图使用渐变...干杯
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-02
      • 1970-01-01
      • 2019-04-24
      • 1970-01-01
      • 1970-01-01
      • 2011-08-24
      • 1970-01-01
      相关资源
      最近更新 更多