0

我正在尝试在谷歌地图上缓冲绘图图形。但似乎它无法做缓冲。

我有一个画画的听众:

google.maps.event.addListener(drawingManager, 'overlaycomplete', function(evt) {
    event = evt;
    ...
  });

那么缓冲函数需要缓冲这个图形:

function GmapBuffering() {
  gsvc = new esri.tasks.GeometryService(gsvcURL);

  //setup the buffer parameters
  var params = new esri.tasks.BufferParameters();
  params.distances = [dojo.byId("distance").value];
  params.bufferSpatialReference = gmaps.ags.SpatialReference.WEB_MERCATOR;
  params.outSpatialReference = gmaps.ags.SpatialReference.WEB_MERCATOR;
  params.unit = eval("esri.tasks.GeometryService." + dojo.byId("unit").value);
  params.geometries = [event.overlay];

  gsvc.buffer(params, function(results, err) {
    console.log(results);
    if (!err) {
      var g= results.geometries[i][j];
      g.setMap(Gmap);
      buffers.push(g);
    } else {
      alert(err.message + err.details.join(','));
    }
  });
}

这是问题所在,我收到如下错误:

TypeError: geom.toJson is not a function http://serverapi.arcgisonline.com/jsapi/arcgis/?v=3.3第 34 行

似乎arcgis GeometryService 无法识别“事件”图形。任何想法将不胜感激!

谢谢。

4

1 回答 1

2

我解决了问题。该错误是由我如何定义 GeometryService 引起的。

假设我们有 arcgis GeometryService 的 URL。为了使用 Google Maps API 3 进行缓冲,我们需要定义 GeometryServiceas 如下:

var gsvcURL = "http://localhost:6080/arcgis/rest/services/Utilities/Geometry/GeometryServer";
var gsvc2 = new gmaps.ags.GeometryService(gsvcURL);

这个例子很有帮助:http: //google-maps-utility-library-v3.googlecode.com/svn-history/r168/trunk/arcgislink/examples/buffer.html

于 2013-02-27T14:47:28.227 回答