gpt4 book ai didi

javascript - 单击更改谷歌地图多边形颜色/填充

转载 作者:行者123 更新时间:2023-12-02 22:59:11 27 4
gpt4 key购买 nike

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

<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。

最佳答案

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

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

关于javascript - 单击更改谷歌地图多边形颜色/填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5932710/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com