1

我有一个应用程序,该应用程序有一个按钮,单击该按钮时会运行查询,然后读取数据集并将标记添加到与读取的值相对应的 TGMMap/TGMMarker 中(它还使用 TGMGeoCode 对地址值进行地理编码,如果这很重要) . 第一次单击按钮时,始终放置正确数量 (10) 的标记,但如果我在显示点后立即再次单击按钮,则会绘制随机数量的标记(有时 3,有时 1,有时5 等)。但是,如果我在再次单击按钮之前等待一段时间(大约 15-20 秒),总是会绘制正确的点数,所以我确信它 s 某种时间问题,其中 DOM 可能未完全构建或某些脚本仍在执行或 ??? 是否有某种状态标志我可以检查以确保地图已准备好接受新标记,或者是否有某种我需要实现的 ProcessMessage 循环?

每次单击按钮时,代码基本上都是这样工作的:

  dataSet.Active := false;
  dataset.Active := true;
  Marker1.Clear();
  while (dataset.Eof=false) do
  begin
    fGeoCoder.Geocode(address);
    // Use first GeoCode result??
    if (fGeoCoder.GeoStatus = gsOK) and (fGeoCoder.Count > 0) then
    begin
      geoResult := fGeoCoder.GeoResult[0];
      lat := geoResult.Geometry.Location.Lat;
      lng := geoResult.Geometry.Location.Lng;

      marker := Marker1.Add(lat, lng);
    end;
    dataset.Next();
  end;

提前感谢您提供的任何帮助。

4

1 回答 1

0

这是 Google Maps API 限制,不是 GMLib 问题。如果您不想等待,则需要为 Google Maps API 访问付费。如果没有,您可以检查地理编码状态(GeoStatus),如果它与 gsOK 不同,请等待几秒钟并发送相同的请求

于 2015-11-16T14:35:47.920 回答