我有一个应用程序,其中有一个按钮,单击该按钮时会运行查询,然后读取数据集并将标记添加到与读取的值对应的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;
提前感谢您提供的任何帮助。
答案 0 :(得分:0)
这是Google Maps API的限制,它不是GMLib问题。如果您不想等待,则需要支付Google Maps API访问权限。如果没有,您可以检查地理编码状态(GeoStatus),如果它与gsOK不同,请等待几秒钟并发送相同的请求