我在課堂上有 1919 個坐標:
public class HardcodedLocations
{
public static List<Position> Positions = new List<Position>
{
new Position(41.19197, 25.33719 ),
new Position(41.26352, 25.1471 ),
new Position(41.26365, 25.24215 ),
new Position(41.26369, 25.33719 ),
}
}
我在建構式頁面中添加坐標:
public AboutPage()
{
InitializeComponent();
List<CustomPin> pins = new List<CustomPin>();
for (int i = 0; i < HardcodedLocations.Positions.Count; i )
{
CustomPin pin = new CustomPin
{
Type = PinType.Place,
Position = HardcodedLocations.Positions[i],
Label = "Xamarin San Francisco Office",
Address = "394 Pacific Ave, San Francisco CA",
Name = "Xamarin",
Url = "http://xamarin.com/about/"
};
pins.Add(pin);
customMap.Pins.Add(pin);
customMap.MoveToRegion(MapSpan.FromCenterAndRadius(new Position(42.8742, 25.3187), Distance.FromMiles(1.0)));
}
customMap.CustomPins = pins;
但是標記沒有顯示,因為在這種方法中不等于:
CustomPin GetCustomPin(MKPointAnnotation annotation)
{
var position = new Position(annotation.Coordinate.Latitude, annotation.Coordinate.Longitude);
foreach (var pin in customPins)
{
if (pin.Position.Latitude == position.Latitude && pin.Position.Longitude == position.Longitude)
{
return pin;
}
}
return null;
}
當我在第一次迭代中的 if 陳述句上停止除錯器時,從類中pin.Position.Latitude獲取 0 索引并獲取 1083 索引。等于。List<Position>HardcodedLocationsposition.Latitudepin.Position.Longitudeposition.Longitude
在第二次迭代中,從類中pin.Position.Latitude獲取 1 個索引并再次獲取 1083 索引。獲取 1 個索引獲取不同的索引。List<Position>HardcodedLocationsposition.Latitudepin.Position.Longitudeposition.Longitude
差異的原因是什么?我該如何解決這個問題?
uj5u.com熱心網友回復:
嘗試直接比較兩個位置,如示例所示
CustomPin GetCustomPin(MKPointAnnotation annotation)
{
var position = new Position(annotation.Coordinate.Latitude, annotation.Coordinate.Longitude);
foreach (var pin in customPins)
{
if (pin.Position == position)
{
return pin;
}
}
return null;
}
示例:https ://github.com/xamarin/xamarin-forms-samples/blob/dacfaec98cf6ddfa587a80a9d9338c14cfb123d1/CustomRenderers/Map/iOS/CustomMapRenderer.cs#L111 。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/449548.html
上一篇:從WebApp讀取訊息
