使用GMLib

时间:2015-11-16 01:21:45

标签: gmlib

我有一个应用程序,其中有一个按钮,单击该按钮时会运行查询,然后读取数据集并将标记添加到与读取的值对应的TGMMap / TGMMarker(它还使用TGMGeoCode对地址值进行地理编码,如果这很重要)。第一次单击该按钮时,始终会放置正确的数字(10)标记,但如果我在显示点后立即再次单击该按钮,则会绘制随机数量的标记(有时为3,有时为1,有时为5等)。但是,如果我再次点击按钮之前等待一段时间(大约15-20秒),则总是会绘制正确的点数,所以我确定它是某种时间问题,其中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;

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

1 个答案:

答案 0 :(得分:0)

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