Php 仅在Google地图上投影SVG的一部分

Php 仅在Google地图上投影SVG的一部分,php,javascript,google-maps,svg,projection,Php,Javascript,Google Maps,Svg,Projection,我有SVG文件,我想: 导出并使用平面欧氏投影作为自定义地面覆盖(ecoym.org.uk/gmap/example_custommapflat.htm) 只拍摄多边形,并将它们投影到谷歌地图上 我的SVG文件有一些共同的规则: 它们都是4096x4096px 地图的主要对象居中 我做了一些实验,其中一个可以在这里看到--*(从URL中删除map.php以查看svg、png和其他文件)。如您所见,问题在于,多边形点投影在左侧,而不是居中+纵横比绝对不正确 所以问题是:当: svg的viewBox

我有SVG文件,我想:

  • 导出并使用平面欧氏投影作为自定义地面覆盖(ecoym.org.uk/gmap/example_custommapflat.htm)
  • 只拍摄多边形,并将它们投影到谷歌地图上
  • 我的SVG文件有一些共同的规则:

  • 它们都是4096x4096px
  • 地图的主要对象居中
  • 我做了一些实验,其中一个可以在这里看到--*(从URL中删除map.php以查看svg、png和其他文件)。如您所见,问题在于,多边形点投影在左侧,而不是居中+纵横比绝对不正确

    所以问题是:当:

  • svg的viewBox属性存在
  • svg的viewBox属性不存在,并且/或者每个多边形都必须进行变换(就像在map.svg中一样)
  • 那么偏移量(物体中心)呢

    提前谢谢你


    *未使用IE测试是否可能将DivPixel与ContainerPixel混淆

    试着改变

       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]))
       );