无法在来自 Firebase 数据库的地图上插入图钉 - XAML
Cant insert pins on map from Firebase database - XAML
我正在使用 this 文章用图钉填充我的地图。
我有以下代码可以在 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; }
}
我的数据库看起来 like this
我的问题是,生成的 pin 具有正确的地址和描述,但位置 returns 为 0,0 而不是数据库中存在的位置。
我可以进行哪些更改才能使其正常工作?提前致谢
你可以做这样的事情来从你的字符串动态创建位置对象
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;
}
}
}
我正在使用 this 文章用图钉填充我的地图。
我有以下代码可以在 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; }
}
我的数据库看起来 like this
我的问题是,生成的 pin 具有正确的地址和描述,但位置 returns 为 0,0 而不是数据库中存在的位置。
我可以进行哪些更改才能使其正常工作?提前致谢
你可以做这样的事情来从你的字符串动态创建位置对象
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;
}
}
}