0

我正在为我们学校开发一个地图应用程序。我们学校为我提供了自己的地图图像和坐标信息。所以我想用我的地图图像作为地图的来源,并根据用户的位置在地图图像中显示一个点。有人可以给我一些建议吗?

提前致谢。

4

1 回答 1

0

有2种方式:

  1. 可以更改Map Control的地图图块的来源(例如,从 Bing 到 Nokia 或 Google)。然而,为了使这个工作,map-tiles 源实现像四键这样的机制是很重要的(例如,见这个)。因此,要回答您的问题,如果您想将 Bing 地图控件与您学校的地图一起使用,以便您可以利用控件的定位功能,则需要您有一个正确设计的地图图块服务器才能实现此目的. 并且,如果我没记错的话,更改 Bing 地图控件可能存在一些法律问题。

  2. 但是,鉴于您建议使用地图图像然后进行定位,那么我建议您使用地理坐标提供的地理坐标校准地图上的像素 XY 坐标系一样简单。观察者。然后,在您的代码中,您可以在这两个系统之间进行简单的映射,然后在图像上绘制一些东西。对于这一部分,您可以使用writeablebitmap或简单地使用您可以使用 silverlight 覆盖 UI 控件的事实。因此,对于后者,有一个带有学校地图图像的画布,然后在该画布上,您可以有一个<image>代表设备并将其左上角坐标更改为画布。

    因此,总而言之,当地理观察者为您的代码提供地理 xy 坐标时,像素 XY (您已预先计算)有映射功能,并使用该 XY 来定位叠加层<image>或在writeablebitmap您之前在哪里绘制了学校地图的图像。当您也想进行缩放时,这种方法会使事情变得复杂,但是这种解决方案很容易扩展。

这有助于澄清一些事情吗?

在下面的评论中回答第二个问题:

是的,您可以放大和缩小画布,但您必须自己编程。控件本身,画布没有这个能力。因此,您必须识别缩放操作的触发器(例如,单击 (+) 或 (-) 按钮或捏合和拉伸手势)并通过在画布上重新绘制区域的一部分来对此做出反应画布,以便现在该区域延伸到整个画布。也就是缩放。例如对于缩放情况:您必须确定与缩放因子相对应的几何区域,并且与画布对象的尺寸成比例。然后,您必须放大该部分,以便代表墙壁和它们之间的空间的边缘和空白空间按比例增长。还,您必须确定您在画布上修复的那个区域的中心点,以便一切都远离它。因此,您将获得适当的缩放效果。此时,您必须重新调整地理坐标到像素 XY 的映射函数,以便可以在新渲染的表面上精确且准确地绘制“图钉”或感兴趣的对象。

我知道这可能看起来非常密集,但是一旦您自己了解所需的机制,它就很简单了。

另一个更简单的选择是在 Web 浏览器控件中使用 SVG(可缩放矢量图形)。请注意,您仍然需要像素 xy 系统的地理坐标。但是,通过这种方法,您可以通过 SVG(具有放大和缩小操作的转换功能)和 Web 浏览器的组合来免费缩放,这使您能够渲染 SVG 并执行放大的手势处理到地图。为此,我相信工作成本将是重新创建您学校的地图,该地图是位图到 SVG。有像Inkscape这样的工具您可以使用它来加载地图的图像,然后在其上追踪轮廓。然后,您可以将该大纲文档保存为 SVG。事实上,在解决 Canvas 方法之前,我会推荐这种方法来解决您的问题,因为我认为这将是满足您需求的最简单途径。

于 2012-09-19T14:11:03.990 回答