我的问题与this类似,但我不确定我的代码与其他帖子中给出的答案有何关联。
我在MapKit
中使用Xamarin iOS
为我的Xamarin iOS项目创建自定义地图。我目前正在进行一些不同的自定义操作,并使用Polygons
annotations
和circles
添加到我的地图中。
我刚刚开始实施向地图添加MKCircle
,但当我尝试将圆形叠加添加到我的地图时,我收到此错误:
System.ArgumentNullException: Value cannot be null. Parameter name: polygon
我认为我正在尝试将相同的叠加层返回给两个渲染器,但我不确定如何对此进行修改。 这是我的代码:
for(int i=0; i < hazards.Count; i++) //This adds 3 circles in my example
{
LatLong ltlng = JsonConvert.DeserializeObject<LatLong>(hazards[i].coordinates);
coords[i].Latitude = Convert.ToDouble(ltlng.latitude);
coords[i].Longitude = Convert.ToDouble(ltlng.longitude);
var overlay = MKCircle.Circle(coords[i], Convert.ToDouble(hazards[i].radius));
nativeMap.AddOverlay(overlay); //this is the suspected problem
}
我的渲染器代码在这里:
MKOverlayRenderer GetOverlayRenderer(MKMapView mapView, IMKOverlay overlayWrapper)
{
if (!Equals(overlayWrapper, null))
{
var overlay = ObjCRuntime.Runtime.GetNSObject(overlayWrapper.Handle) as IMKOverlay;
polygonRenderer = new MKPolygonRenderer(overlay as MKPolygon)
{
FillColor = UIColor.Red,
StrokeColor = UIColor.Blue,
Alpha = 0.4f,
LineWidth = 9
};
}
return polygonRenderer;
}
我是否需要在渲染器代码中添加一些内容?
circleRenderer = new MKCircleRenderer(overlay as MKCircle){};
答案 0 :(得分:3)
所有叠加层的显示基于import tensorflow as tf
Dataset = tf.contrib.data.Dataset
it2 = Dataset.range(5).make_one_shot_iterator()
das_dataset = Dataset.from_tensors(0).repeat().map(lambda _: it2.get_next())
das_dataset_it = das_dataset.make_one_shot_iterator()
with tf.Session() as sess:
while True:
print(sess.run(it2.get_next()))
print(sess.run(das_dataset_it.get_next()))
:
MKCircle
在var overlay = MKCircle.Circle(coords[i]
中,您将所有重叠的广告作为GetOverlayRenderer
对象投放,这将导致空对象。
MKPolygon
然后,您尝试为每个叠加层创建一个polygonRenderer = new MKPolygonRenderer(overlay as MKPolygon)
渲染,如果您确实拥有基于MKCircle的叠加层,则无效。
如果所有叠加层都基于MKPolygonRenderer
,那么请使用:
MKCircle