如何简化地图中的引脚

Posted

技术标签:

【中文标题】如何简化地图中的引脚【英文标题】:How can i simplify pins in maps 【发布时间】:2020-11-27 17:24:21 【问题描述】:

所以我在我的 VS Xamarin 项目中实现了 Google Maps。 我知道有一种方法可以简化我的代码,但我不知道我还能做些什么。 我的地图上有一堆标记,每次创建一个我都会创建一个整体,所以我想简化这个过程,如果可能的话,从一个 excel 文件中提取信息。

我的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
using Xamarin.Forms.Maps;

namespace ------

    
    [DesignTimeVisible(false)]
    public partial class MainPage : ContentPage
    
        public MainPage()
        
            InitializeComponent();
            Position position = new Position(36.9628066, -122.0194722);
            MapSpan mapSpan = new MapSpan(position, 0.01, 0.01);
            Map map = new Map(mapSpan)
            
               MapType = MapType.Hybrid
            
            ;
            Content = map;
            Pin pin = new Pin
            
                Label = "Santa HEY MAN",
                Address = "The city with a boardwalk",
                Type = PinType.Place,
                Position = new Position(36.9628066, -122.0194722)
            ;
            map.Pins.Add(pin);

            Pin pin2 = new Pin
            
                Label = "USA",
                Address = "2020",
                Type = PinType.Place,
                Position = new Position(36.9628066, -122.0194722)
            ;
            map.Pins.Add(pin2);


        

    


这里我只显示了 2 个图钉,但实际上我有 30 个图钉。 我怎样才能让这更简单? 非常感谢! :)

【问题讨论】:

使用您的 pin 数据创建一个 json 文件,读取并循环通过它为每个数据元素创建一个 pin @Jason 您能否详细说明一下。我不明白。 在下面查看我的答案 【参考方案1】:

注意这都是伪代码,不是语法正确的 json/C#

首先,使用您的数据创建一个 json 文件并将其包含在您的项目中

[ 
   Label = "USA" Address = "2020", Lat = "36.9628066" Long = "-122.0194722" ,
  ... 
   Label = ""Santa HEY MAN", Address = "The city with a boardwalk", Lat = "36.9628066" Long = "-122.0194722 
]

然后,在您的代码中

// read the file
var json = File.ReadAllText(path);

// deserialize using NewtonSoft
var places = DeserializeObject<List<Place>>(json);

// then create pins
foreach (var place in places)

   var pin = new Pin
        
            Label = place.Label,
            Address = place.Address,
            Type = PinType.Place,
            Position = new Position(place.Lat, place.Long)
        ;
   map.Pins.Add(pin);

【讨论】:

以上是关于如何简化地图中的引脚的主要内容,如果未能解决你的问题,请参考以下文章

在地图上显示 firebase 子集合的引脚 - Flutter

尝试从数组中的值中删除基于 MKMap 的引脚

学习笔记2

iOS:地图视图注释未显示针脚

在不同的引脚上显示自定义和默认标注视图,并在地图视图上进行引脚聚类

谷歌地图 - 点击引脚后标记部分