是否可以从GMSPolygon
didTapOverlay
委派方法更改GMSMapViewDelegate
.fillColor 属性?这是委派方法:
func mapView(mapView: GMSMapView, didTapOverlay overlay: GMSOverlay)
我的问题是GMSPolygon
继承自GMSOverlay
,而叠加层没有fillColor属性。我想要实现的结果是当用户点击它时改变多边形的颜色
由于
答案 0 :(得分:0)
之前我遇到过同样的情况(我当时使用的是Objective-C)。
我的解决方案是生成唯一ID(随机字符串或数字),然后将它们设置为每个GMSPolygons的title属性。
以下代码由Objective-C编写,但您可能理解
- (void)mapView:(GMSMapView *)mapView didTapOverlay:(GMSOverlay *)overlay {
NSString *overlayClass = NSStringFromClass([overlay class]);
if ([overlayClass isEqualToString:@"GMSPolygon"] ||
[overlayClass isEqualToString:@"GMSPolyline"] ||
[overlayClass isEqualToString:@"GMSCircle"] ||
[overlayClass isEqualToString:@"GMSGroundOverlay"]) {
[self triggerOverlayEvent:@"overlay_click" id:overlay.title]; // <-- here
}
}
当然,您需要自己使用生成的ID管理所有多边形(和其他多边形)。
答案 1 :(得分:0)
我找到了一种简单的(单行)方式。由于$(function() {
var y1 = [49.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4];
var y2 = [83.6, 78.8, 98.5, 93.4, 106.0, 84.5, 105.0, 104.3, 91.2, 83.5, 106.6, 92.3];
var y3 = [48.9, 38.8, 39.3, 41.4, 47.0, 48.3, 59.0, 59.6, 52.4, 65.2, 59.3, 151.2];
var color1="yellow", color2="green", color3="red";
var name1="Montreal",name2="Paris",name3="Mostaganem";
var yObj1=[],yObj2=[],yObj3=[];
function pushfct(tempObj,x,y,z){
var temp={y:0,color:"xxxx", name:"xxxx"};
temp.y=x;
temp.color=y;
temp.name=z;
tempObj.push(temp);
}
for (i = 0; i < y1.length; i++) {
if (y1[i] < y2[i])
if (y1[i] < y3[i])
if (y2[i] < y3[i]) {
pushfct(yObj1,y1[i],color1, name1);
pushfct(yObj2,y2[i], color2, name2);
pushfct(yObj3,y3[i], color3, name3);
}
else
{
pushfct(yObj1,y1[i], color1, name1);
pushfct(yObj2,y3[i], color3, name3);
pushfct(yObj3,y2[i], color2, name2);
}
else
{
pushfct(yObj1,y3[i], color3, name3);
pushfct(yObj2,y1[i], color1, name1);
pushfct(yObj3,y2[i], color2, name2);
}
else
if (y2[i] < y3[i])
if (y1[i] < y3[i])
{
pushfct(yObj1,y2[i], color2, name2);
pushfct(yObj2,y1[i], color1, name1);
pushfct(yObj3,y3[i], color3, name3);
}
else
{
pushfct(yObj1,y2[i], color2, name2);
pushfct(yObj2,y3[i], color3, name3);
pushfct(yObj3,y1[i], color1, name1);
}
else
{
pushfct(yObj1,y3[i],color3, name3);
pushfct(yObj2,y2[i], color2, name2);
pushfct(yObj3,y1[i], color1, name1);
}
}
$('#container').highcharts({
chart: {
type: 'column'
},
tooltip: {
formatter:function(){
return this.key +': $'+ this.y;
}
},
series: [{
showInLegend:false,
data: yObj1,
}, {
showInLegend:false,
data: yObj2,
}, {
showInLegend:false,
data: yObj3,
}]
});
});
是GMSPolygon
的子类,我们可以将他转换为GMSPolygon对象,委托方法将继续正常工作,并将其视为GMSPolygon对象,更改它GMSOverlay
{ {1}}属性。
以下是代码:
.fillColor