我正在尝试将一个MapAnnotation项目添加到我的Map()视图中MapKit。
如果您在文本字段中手动添加坐标,则一切正常,但我找不到任何通过点击地图来添加坐标的方法。
我在互联网上阅读了很多内容,但没有找到任何有关onTap()地图事件处理的信息。
这是我到目前为止的地图视图的样子:
struct MyMap : View {
@State private var myRegion:MKCoordinateRegion = {
var newRegion = MKCoordinateRegion()
newRegion.center.latitude = 53.7576508
newRegion.center.longitude = -11.1811597
newRegion.span.latitudeDelta = 0.1
newRegion.span.longitudeDelta = 0.1
return newRegion
}()
@State private var annotationItems : [Annotation] = [
Annotation(name: "Pin1", description: "myDescription", coordinate: CLLocationCoordinate2D(latitude: 123.7576508, longitude: -7.2373215))
]
var body: some View {
ZStack {
Map(coordinateRegion: self.$myRegion, interactionModes: .all, annotationItems: annotationItems){ item in
MapAnnotation(coordinate: item.coordinate){
PinView(pin: item)
} …Run Code Online (Sandbox Code Playgroud) 我有一个这样的类菜:
public class Dish
{
public Dish(int cost, string name)
{
Cost = cost;
Name = name;
}
public int Cost { get; set; }
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在主窗体中,用户可以输入以前的数据。然后我创建一个“菜”列表:
public static List<Piatto> List = new List<Piatto>();
Run Code Online (Sandbox Code Playgroud)
我在一个静态类中创建了它,所以我可以从任何地方访问它。一旦一个项目被添加到列表中,我想将它保存在一个文本文件 (.txt) 中,所以我尝试使用这个:
public static void SaveToTxt()
{
using (TextWriter tw = new StreamWriter(Path))
{
foreach (var item in Data.List)
{
tw.WriteLine(item.ToString());
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,当我打开保存列表的文本文件时,我得到“WindowsFormsApplication1.Dish”。
如何保存到显示成本和名称的文本文件?
Ps 我想将列表保存在文本文件中,因为删除一行对我来说更容易,这是我不知道如何用二进制做的。
提前致谢。
编辑:
覆盖该ToString()方法工作正常。谢谢大家的回答!