我的应用程序使用最新版本的 Xamarin Forms。此应用程序与 map 紧密集成。 Android 和 iOS 是两个受支持的平台。
现在我可以实现两件事:
- 当我有坐标时在任何位置居中 map
- 添加自定义标记(图钉)
仍然需要以下功能(按重要性排序):
- 在 map 点击事件中获取坐标
- 获取坐标以响应某些带地址的搜索字符串
- 两点之间的路由(绘制路由线)
- 计算两点之间的时间/距离
我是 Xamarin 的新手,我检查了 Xamarin Forms Maps API,我发现没有办法用它来实现这 4 点。
我说的对吗? 是否有替代的 Xamarin Forms 包? 我可以使用适用于 Android/iOS 的 native Xamarin map 控件实现这些功能中的任何一个吗?
非常感谢任何信息或示例! 搜索和浏览论坛没有帮助。我找到了一些带有 Java 示例的 Google Maps API 解决方案,但我不知道如何在 Xamarin 中实现它。由于应用程序的很大一部分已经在 Xamarin 中实现,而且我已经习惯了 C#,所以我不想更改平台。
最佳答案
您将需要查找 native iOS 和 Android 实现来完成这项工作,但您应该使用 SAP 或 PCL 中的依赖项注入(inject)来调用 native 实现来满足您的需要。
*注意 - 这是为了提供有关如何进行此操作的一般概述,而不是复制粘贴实现。未实现开放 map ,也未实现有关如何或何时在共享代码中获取坐标的说明。
例子
在共享代码中-
interface IMapping
{
public OpenMap();
public Model<GeoPoint>GetLastTouchCoordinates();
}
在安卓项目中-
//For use with Xamarin.Forms.DependencyService will not be necessary with other IoC containers if not using forms look up Tiny IoC, Unity or one of the other DI containers
[assembly: Xamarin.Forms.Dependency(typeof(YourNameSpace.Droid.YourClass))]
public class GoogleMap : FragmentActivity, IMapping, IOnMapClickListener
{
private GoogleMap mMap;
private Point lastClickedPoint;
protected void OnCreate()
{
base.OnCreate();
setContentView(some map fragment layout)
//set the map touch listener
}
private void handletouch()// implementation of IOnMapClickListener Interface
{
//google how to get the coordinates in android on a map touch
lastClickedPoint = new Point();
lastClickedPoint.lat = args.lat;
lastClickedPoint.long = args.long;
}
private Model<GeoPoint> GetLastTouchCoordinates()
{
if(lastclickedPoint != null)
{
Model<Geopoint> gp = new Model<Geopoint>();
gp.latitude = p.latitude;
gp.longitude = p.longitude;
return gp;
}
else
{
return Point with some indication that you have no point
}
}
}
在共享代码中 --
现在使用它只需写这样的东西
DependencyService.Get<IMapping>.OpenMap()
DependencyService.Get<IMapping>.GetLastTouchCoordinates()
链接到有关跨平台代码中的依赖注入(inject)的更多详细信息 http://adventuresinxamarinforms.com/2014/11/17/creating-a-xamarin-forms-application-part-4-dependency-injection/
关于c# - Xamarin 表格和 map - 在 map 上获取坐标,创建路线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28087381/