0

我有 SVG 文件,我想:

  1. 导出并用作带有平面欧几里得投影的自定义地面叠加层 (econym.org.uk/gmap/example_custommapflat.htm)。
  2. 只取多边形并将它们投影到谷歌地图上

我的 SVG 文件有一些共同的规则:

  1. 它们都是 4096x4096px
  2. 地图的主要对象居中

我做了一些实验,其中一个可以在这里看到——http: //dev.ondigital.eu/map/map.php *(从 URL 中删除 map.php 以查看 svg、png 和其他文件)。如您所见,问题在于,多边形点被投影在左侧而不是居中+纵横比绝对不正确。

所以问题是:如何计算纵横比,当:

  1. 存在 svg 的 viewBox 属性
  2. svg 的 viewBox 属性不存在和/或必须转换每个多边形(如我们的 map.svg 中)。

那么偏移量(对象中心)呢?

先感谢您!

*未使用 IE 测试

4

1 回答 1

0

您是否有可能将 DivPixels 与 ContainerPixels 混淆?

尝试改变

   var latlng  = self.projection.fromPixelToLatLng(
       new GPoint(point[0], point[1]),
       self.map.getZoom()
   );

   var latlng  = self.map.fromContainerPixelToLatLng(
      new GPoint(parseFloat(point[0]), parseFloat(point[1]))
   );

在这种情况下,您使用字符串而不是数字这一事实可能不会导致任何问题,但是现在使用数字是一个好主意,并避免 + 运算符在您的坐标上进行字符串连接而不是加法的可能性稍后在您的项目中。

于 2009-10-02T23:55:34.373 回答