仅在Google Map上投影SVG的某些部分

时间:2009-10-02 14:51:03

标签: php javascript google-maps svg projection

我有SVG文件,我想:

  1. 导出并用作具有平面欧几里德投影的自定义地面叠加层(econym.org.uk/gmap/example_custommapflat.htm)。
  2. 仅使用多边形并在Google地图上投影
  3. 我的SVG文件有一些共同的规则:

    1. 他们都是4096x4096px
    2. 地图的主要对象居中
    3. 我做了一些实验,其中一个可以在这里看到 - http://dev.ondigital.eu/map/map.php *(从URL中删除map.php以查看svg,png和其他文件)。正如您所看到的,问题是,多边形点投影在左侧而不是居中+宽高比绝对不正确。

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

      1. svg的viewBox属性存在
      2. svg的viewBox属性不存在和/或每个多边形都必须被转换(就像我们的map.svg一样)。
      3. 那么偏移(对象中心)呢?

        提前谢谢!

        *未经IE测试

1 个答案:

答案 0 :(得分: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]))
   );

在这种情况下,使用Strings而不是Numbers的事实可能不会导致任何问题,但是现在使用Numbers是个好主意,并避免+运算符执行String连接而不是添加的可能性在您项目的后期坐标上。