【问题标题】:Projecting only some part of SVG on Google Map仅在 Google Map 上投影 SVG 的一部分
【发布时间】:2010-12-03 08:36:58
【问题描述】:

我有 SVG 文件,我想要:

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

我的 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 测试

【问题讨论】:

    标签: php javascript google-maps svg projection


    【解决方案1】:

    您是否将 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]))
       );
    

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

    【讨论】:

      猜你喜欢
      • 2018-01-15
      • 1970-01-01
      • 2022-07-20
      • 1970-01-01
      • 1970-01-01
      • 2021-11-28
      • 2011-10-02
      • 2021-12-06
      相关资源
      最近更新 更多