【问题标题】:How do create a list of markers using data from a database如何使用数据库中的数据创建标记列表
【发布时间】:2022-11-09 17:39:51
【问题描述】:

我正在使用 radzen 在 blazor 中生成代码以创建 Web 前端。

Radzen 可以选择添加一个 googlemap 组件,该组件具有用于精确定位地图上特定位置的标记。用于此的 API 在底部。

标记的参数之一是“googlemappositions”,这需要 2 个双精度参数(纬度和经度)。

我想将数据库中的所有这些纬度和经度值添加到地图中。

使用 LINQ 我创建了一些查询来检索经度和纬度值。

我试图遍历数据库中的数据,然后将它们添加到“googlemappositions”数组中,但它似乎不起作用。我不确定问题出在哪里。

我想要的伪代码:

Googlemappositions = 
[
Googlemapposition1() { latitude1 , longitude1 }
,
Googlemapposition2() { latitude2 , longitude2 }
,
Googlemapposition3() { latitude3 , longitude3 }
,
Googlemapposition4() { latitude4 , longitude4 }
]

 for each (item in googlemappositions)
{ markername = bridgename  position = item}

我假设我在查询或循环中犯了错误。 我尝试调试代码,但没有收到任何有关地图的相关信息。

//Database

表:桥

列:

ID[1,2,3,4,5]

名称[east, bigbridge,small,westbridge,north]

纬度[54.2333, 53.2929, 56.39449, 53.20933,52.1]

经度[4.3224,3.9953,4.232323,3.23503,5.6789]

//Code

//Create getDbdata

    [Table("bridges", Schema = "public")]
    public partial class Bridge
    {
        public double latitude
        {
            get;
            set;
        }
        public double longitude
        {
            get;
            set;
        }

//Retrieve Latitude Query

      public List<double> GetLatitude(Bridges bridge)
        {

            List<double> latitudes = Context.Bridges
                               .Where(i => i.id == bridge.id)
                               .Select(i => i.latitude)
                               .ToList();
            return latitudes;
        }

//Retrieve Longitude Query

        public List<double> GetLongitude(Bridges bridge)
        {

            List<double> longitudes = Context.Bridges
                                .Where(i => i.id == bridge.id)
                               .Select(i => i.longitude)
                               .ToList();
            return longitudes;
        }

//Create positions

public List<GoogleMapPosition> GetPosition()
        {
            List<GoogleMapPosition> positions = new List<GoogleMapPosition>();
            GoogleMapPosition[] posArray = new GoogleMapPosition[] { };

            for (int i = 0; i < posArray.Length; i++)
            {
                GoogleMapPosition item = posArray[i];
                foreach (var b in getBridgeResults)
                {
                    foreach (var (latitude, longitude) in GetLatitude(b).SelectMany(latitude => GetLongitude(b).Select(longitude => (latitude, longitude))))
                    {
                        positions.Add(new GoogleMapPosition() { Lat = latitude, Lng = longitude });
                    }
                }                
            }
            return positions;
        }

//Add Positions to Map

<Markers>
        @foreach (var item in GetPosition())
        { 
                    <RadzenGoogleMapMarker Label="bridge.name" Position=@item Title="bridge.name">
                    </RadzenGoogleMapMarker>
        }
      </Markers>

“RadzenGoogleMap”API: https://www.radzen.com/documentation/blazor/googlemap/

【问题讨论】:

  • 分解你的问题。这里至少有 2-3 个单独的部分。
  • 具体来说,使用 C#(Blazor) 我想在地图上有多个标记。来自标记(纬度,经度)的数据我想从我的数据库中检索并循环它们。在此之后,我想将这些值转换为标记,然后可以在 googlemap 上使用。
  • 我会尽快添加代码
  • 那么您的问题是 1)从您的数据库中读取,2)将您读取的数据转换为适当的格式,还是 3)在 radzengooglemap 上创建标记(无论是什么)?当我说你需要分解你的问题时,这就是我的意思;它不应该是“以上所有”,因为有些部分是您可以在不受外界影响的情况下自己解决的问题,对吧?
  • 在这种情况下,问题是创建标记

标签: c# linq blazor radzen


【解决方案1】:

我认为,如果您将“<RadzenGoogleMapMarker Label="bridge.name" Position="@item" " 设置为双引号而不是 " "

【讨论】:

    猜你喜欢
    • 2022-07-22
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-09
    • 2014-03-23
    • 2011-11-10
    • 1970-01-01
    相关资源
    最近更新 更多