- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我刚刚使用 mappoint api 通过代码尝试了多个路由。它工作正常,但一些路线需要极长的时间来计算(18.5 秒)。如果我通过 MapPoint 本身计算相同的路线,它只需要不到 2 秒。
在上面的例子中,我计算了德国乌尔姆和曼海姆之间的路线。
class CalculateTime : IDisposable
{
MapPoint.Application app;
MapPoint.Map map;
MapPoint.Route route;
public CalculateTime()
{
app = (MapPoint.Application)Activator.CreateInstance(Type.GetTypeFromProgID("mappoint.application"));
map = app.ActiveMap;
route = map.ActiveRoute;
}
public class Place
{
public string City { get; set; }
public string Street { get; set; }
public string Postal { get; set; }
public Place(string City = "", string Street = "", string Postal = "")
{
this.City = City;
this.Street = Street;
this.Postal = Postal;
}
}
public class Place
{
public string City { get; set; }
public string Street { get; set; }
public string Postal { get; set; }
public Place(string City = "", string Street = "", string Postal = "")
{
this.City = City;
this.Street = Street;
this.Postal = Postal;
}
}
public TimeSpan Calculate(Place From, Place To)
{
Stopwatch sw = new Stopwatch();
MapPoint.FindResults frFromCollection = map.FindAddressResults(City: From.City, Street: From.Street, PostalCode: From.Postal);
MapPoint.FindResults frToCollection = map.FindAddressResults(City: To.City, Street: To.Street, PostalCode: To.Postal);
object frFrom = frFromCollection[1];
object frTo = frToCollection[1];
route.Waypoints.Add(frFrom);
route.Waypoints.Add(frTo);
sw.Start();
route.Calculate();
TimeSpan time = new TimeSpan(0, (int)(route.DrivingTime * 24 * 60), 0);
route.Clear();
sw.Stop();
Marshal.ReleaseComObject(frFromCollection);
Marshal.ReleaseComObject(frToCollection);
Marshal.ReleaseComObject(frFrom);
Marshal.ReleaseComObject(frTo);
MessageBox.Show(sw.Elapsed.Seconds + "." + sw.ElapsedMilliseconds);
return time;
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
~CalculateTime()
{
Dispose(false);
}
protected virtual void Dispose(bool disposing)
{
if (disposing)
{
map.Saved = true;
Marshal.ReleaseComObject(route);
Marshal.ReleaseComObject(map);
app.Quit();
Marshal.ReleaseComObject(app);
}
}
}
我记得有另一种方法可以计算显示弹出窗口的路线(不是 MapPoint.Route.Calculate()
,但我忘记了。
有人知道如何加速计算吗?
问候哇哇
编辑:我刚试过这个:通过代码添加航点,但通过 MapPoint 本身计算路线。这也需要很长时间。不知何故,Waypoint 似乎是问题所在,而不是 Calculate
方法
编辑:
看起来 MapPoint 已经在后台计算了路线。如果我在调用 Calculate 之前等待几秒,它会在毫秒内完成。
最佳答案
除了每次都使应用程序假脱机外,请记住 COM 接口(interface)会增加一些开销。不多,但这是需要注意的事情。
我还注意到 MapPoint 2010 需要一两秒钟的时间来加载 - 比早期版本更长。
正如 Marc 所指出的,隐藏大部分 map 显示可以导致大约 30% 的加速,因为 MapPoint 不必显示路线。
最后,路线计算会根据路点位置和道路密度/复杂性而有很大差异。一条路线可能需要 0.5 秒来计算,但其他地方类似长度的路线需要 2-3 秒。
最后,最后 :-),MapPoint 的许多方面都针对人类用户而不是 API 使用进行了优化。例如,垃圾回收绝对是面向人的,而不是面向批处理 API 的优化。 (MapPoint 将随着大量批处理 API 的使用而变慢,因为垃圾收集器对于此类工作的调用频率不够高)
关于c# - 为什么 MapPoint.Route.Calculate() 比应用程序本身的计算慢得多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4862319/
谁能告诉我是否可以将 .jpg 文件导入到 MS Mappoint Europe 2006 中?如果可能的话可以通过 OCX 控件来完成吗? 我想将某个区域的一些航拍照片导入到 MapPoint 中,
在我的 iPhone 应用程序中,我正在利用 google place api - 在 map View 上绘制附近的餐馆。我遇到的问题是当我在同一个 map View 上处理核心数据对象时。澄清一下
我正在尝试为 MapPoint 开发一个加载项(带有表单和其他功能),并且我正在尝试获取有关如何执行此操作的一些信息。到目前为止,我没有太多信息。 有没有人知道一个好的网站或有一些用于开发 MapPo
我在将 MS MapPoint 2009 集成到我的 C# WinForms .Net 2.0 应用程序时遇到了一些问题。我已将 ActiveX MapPoint 控件添加到窗体上,并且可以毫无问题地
我想知道是否有可能显示该方法正在计算的窗口(与MapPoint 2010应用程序中显示的完全相同),并有可能取消该计算(因为优化路线的计算持续时间很长)?如果可以,我可以通过什么方式做到这一点? 最佳
我正在编写一个使用 MS Mappoint OCX 的 MFC 应用程序。我需要在 map 上显示人和车辆的位置,最好的方法似乎是使用图钉对象。我可以显示带有一些文本的股票图钉图标,但想将图标更改为自
下午好 我需要计算大约 4000 个点之间的成对距离,这些点在 WGS84 中的坐标是已知的。计算直线距离并不难,因为我找到了 this C# 库,但现在我对通过道路而不是直线的最短距离感兴趣。 使用
我有一个自定义 imageView,其中有一个矩阵,我可以拖动、缩放,现在我也可以在其上绘制和删除点(坐标)。 问题是:如何在缩放或拖动矩阵后移动这些点 我已将所有点保存在(Mark 和 Markin
我在将纬度和经度值转换为 android esri arcGIS map 点时遇到问题。这是我从 GPS 坐标获取纬度和经度值的代码: LocationManager lm; String tower
如何最好地利用新的类型等效功能在 WPF 应用程序中托管 MapPoint 控件。 这与我关于 maintaining interop assembleis 的其他问题有关。关于新的 NoPIA 和
我有一个我支持的旧版 VB6 应用程序,它使用 MapPointControl.ocx。客户说它不适用于 Mappoint 2009。 谷歌搜索后,似乎欧洲添加的 Mappoint 带有一个坏的 OC
我正在将 2D android 游戏转换为开放式 GL android 游戏,我的部分碰撞检测系统依赖于基于某些矩阵映射某些点。我需要 mapPoints 的等价物,它将接受 x、y、z 三元组数组,
我刚刚使用 mappoint api 通过代码尝试了多个路由。它工作正常,但一些路线需要极长的时间来计算(18.5 秒)。如果我通过 MapPoint 本身计算相同的路线,它只需要不到 2 秒。 在上
我可以在我的 c# Winform 应用程序中使用 MapPoint 吗?我的意思是我在互联网上找不到好的资源,Microsoft 确实为开发人员提供了一些信息,但我对如何将其集成到我的应用程序感到困
我的应用程序需要一个车载 map ,因为在运行期间将无法访问互联网。我已经决定使用 MapPoint 2009,但 map “风格”确实与我的整体 UI 外观和感觉冲突。 我想知道是否有某种方法可以自
我想开始将 Bing 用于一个项目,其中包括计算点之间的最短路线,以及在 map 上绘制路线等。 但是,除了 Bing Maps,还有 VirtualEarth 和 MapPoint。所有这些产品如何
是否可以在 map 点执行onclick() 时显示弹出窗口,并且当您正确更改缩放位置时,有人成功了吗?使用的库是 gluon maps。 我想在单击 map 点时显示工具提示,当我更改缩放比例时,
我目前正在开发一个带有 MapPoint-Control 的应用程序,这让我很难过。从 mappoint 也使用的线程启动 DoDragDrop 后,我总是在几秒后收到来自 mappoint 的对话框
我们正在尝试将一个文件从 C# dll 导入 MapPoint,并让它能够很好地读取数据,但我们遇到了 MapPoint 无法识别所有地址的问题。目前,我们的文件不仅包含地址信息,还包含纬度和经度(在
我在这里阅读了有关 Microsoft MapPoint 2011 的信息,http://msdn.microsoft.com/en-us/library/cc983790.aspx . 它使用 GP
我是一名优秀的程序员,十分优秀!