我正在使用這篇文章用圖釘填充我的地圖。
我有以下代碼在 Xamarin.Forms.Maps 中顯示來自我的 firebase 資料庫的引腳
PageMap.xaml.cs:
public PageMap()
{
InitializeComponent();
BindingContext = this;
databaseLoad();
}
public ObservableCollection<MyDatabaseRecord> DatabaseItems { get; set; } = new
ObservableCollection<MyDatabaseRecord>();
FirebaseClient firebaseClient = new FirebaseClient("firebaselink");
private void databaseLoad()
{
var collection = firebaseClient
.Child("Localizacoes")
.AsObservable<MyDatabaseRecord>()
.Subscribe((dbevent) =>
{
if (dbevent != null)
{
DatabaseItems.Add(dbevent.Object);
}
});
}
PageMap.xaml:
<Grid>
<maps:Map x:Name="map"
ItemsSource="{Binding DatabaseItems}">
<maps:Map.ItemTemplate>
<DataTemplate>
<maps:Pin Position="{Binding Position}"
Address="{Binding Address}"
Label="{Binding Description}" />
</DataTemplate>
</maps:Map.ItemTemplate>
</maps:Map>
</Grid>
(編輯)MyDatabaseRecord.Cs:
public class MyDatabaseRecord
{
public string Address { get; set; }
public string Description { get; set; }
public double Lat { get; set; }
public double Long { get; set; }
}
我的資料庫看起來像這樣
我的問題是,pin 是用正確的地址和描述生成的,但是位置回傳為 0,0 而不是資料庫中存在的那個。
我可以進行哪些更改才能使其正常作業?提前致謝
uj5u.com熱心網友回復:
你可以做這樣的事情來從你的字串動態創建位置物件
public class MyDatabaseRecord
{
public string Address { get; set; }
public string Description { get; set; }
public string Position { get; set; }
private Position parsedPosition;
public Position ParsedPosition {
get {
if (parsedPosition != null) return parsedPosition;
var pos = Position.Split(',');
double lat = double.Parse(pos[0]);
double lng = double.Parse(pos[1]);
parsedPosition = new Position(lat,lng);
return parsedPosition;
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/459779.html
標籤:C# 谷歌地图 xml xamarin firebase-实时数据库
