Google maps 谷歌地图API 3叠加,需要得到投影

Google maps 谷歌地图API 3叠加,需要得到投影,google-maps,google-maps-api-3,overlay,Google Maps,Google Maps Api 3,Overlay,我想在谷歌地图上做一个覆盖图。我已经使用maptiler生成了图像的平铺,但是maptiler生成的示例在v2中,我想使用v3。由maptiler生成的示例也非常复杂,并执行一些不必要的不透明操作。现在,通用汽车的v3在v2之后发生了很大的变化,我在生成屏幕上某一点的车床时遇到了一些问题。getProjection()一直未定义,无论我做什么,知道如何获取投影吗 <script> var mapBounds = new google.maps.LatLngBounds();

我想在谷歌地图上做一个覆盖图。我已经使用maptiler生成了图像的平铺,但是maptiler生成的示例在v2中,我想使用v3。由maptiler生成的示例也非常复杂,并执行一些不必要的不透明操作。现在,通用汽车的v3在v2之后发生了很大的变化,我在生成屏幕上某一点的车床时遇到了一些问题。getProjection()一直未定义,无论我做什么,知道如何获取投影吗

<script> 
  var mapBounds = new google.maps.LatLngBounds();
  var mapMinZoom = 8;
  var mapMaxZoom = 14;
  var overlay;

  var maptiler = new google.maps.ImageMapType({
    getTileUrl: function(coord, zoom) {
          if ((zoom < mapMinZoom) || (zoom > mapMaxZoom)) {
        return "none.png";
      } 
      var ymax = 1 << zoom;
      var y = ymax - coord.y -1;
      var tileBounds = new google.maps.LatLngBounds(
        overlay.getProjection().fromDivPixelToLatLng( new google.maps.Point( (coord.x)*256, (coord.y+1)*256 ) , zoom ),
        overlay.getProjection().fromDivPixelToLatLng( new google.maps.Point( (coord.x+1)*256, (coord.y)*256 ) , zoom )
      );
      if (mapBounds.intersects(tileBounds)) {
        return "" + zoom + "/" + coord.x + "/" + (Math.pow(2,zoom)-coord.y-1) + ".png";
      } else {
       return "none.png";
      }
   },
   tileSize: new google.maps.Size(256, 256),
   isPng: true
  });

  var map;
  function initialize() {
    map = new google.maps.Map(document.getElementById("map_canvas"));
    map.setZoom(11);
    map.setMapTypeId('satellite');
    mapBounds.extend(new google.maps.LatLng(50.9388615939, 3.80480816501));
    mapBounds.extend(new google.maps.LatLng(51.4402541425, 4.73612507791));
    map.fitBounds(mapBounds);

    overlay = new google.maps.OverlayView();
    overlay.draw = function() {};
    overlay.setMap(map);

    map.overlayMapTypes.insertAt(0, maptiler);
  }
</script> 
但这在v3中已经不可能了

有人能帮忙吗

maptiler生成的示例可在此处找到:

这是v3中的一个简单示例,它可以工作:

但是我希望除了地图以外的所有东西都是特定的颜色,所以这就是我正在尝试的示例:

谢谢


Daan

查看API3中有关自定义覆盖的文档

如果使用MapTiler,则无需担心获取或设置投影

这两个YouTube视频将引导您使用MapTiler和Google Maps API v3 map(如果我理解正确的话)浏览(以及其他内容),并将其样式设置为某种颜色,这正是您想要了解的:


将此函数用作墨卡托函数:

function GMercatorProjection() {
  this.pixelOrigin_ = new google.maps.Point(tileSize / 2, tileSize / 2);
  this.pixelsPerLonDegree_ = tileSize / 360;
  this.pixelsPerLonRadian_ = tileSize / (2 * Math.PI)
}
function GMercatorProjection() {
  this.pixelOrigin_ = new google.maps.Point(tileSize / 2, tileSize / 2);
  this.pixelsPerLonDegree_ = tileSize / 360;
  this.pixelsPerLonRadian_ = tileSize / (2 * Math.PI)
}