背景:
我正在使用Crystal Reports生成工作订单样式表,该表显示带有指示服务位置标记的Google地图图像。 GPS坐标作为“长”变量存储在访问数据库中,这些变量有13个小数位。
我在OLE对象中显示Google地图图像,并将图形位置网址设置为静态Google地图网页。我将连接数据库中的值传递给URL字符串:
"http://maps.googleapis.com/maps/api/staticmap?center=" & {DbTblName.gps_lat} & "," & {DbTblName.gps_long} & "&zoom=15&size=256x256&markers=color:red%7C" & {DbTblName.gps_lat} & "," & {DbTblName.gps_long};
DbTblName.gps_lat
和DbTblName.gps_long
是基于用于填充报告的Select Command
从数据库中提取的GPS坐标。
问题:
Crystal Reports将DbTblName.gps_lat
和DbTblName.gps_long
的值四舍五入为小数点后两位;导致Google图像上的标记偏离100米。
我尝试过的事情:
将Crystal Report上GPS坐标字段的数字格式调整为最大可见小数位数以及最大小数舍入次数。 注意:这会创建自定义数字格式;并且小数位数出现在报告字段中,但格式更改未转换为图形位置URL字符串
更改数字格式的系统默认设置以接受最大小数位数(可见和舍入)。
将访问数据库中的数据类型更改为“短文本”,并将坐标作为字符串传递。 注意:这实际上工作正常,它将标记放在正确的位置,并且是最快的解决方案;但这不是我想要的解决方案。我想在最糟糕的情况下,我可以创建一个数据库字段为“长”,一个创建为“短文本”,但复制数据库中的值似乎很愚蠢。我需要Access数据库将GPS存储为“长”,以便根据GPS位置执行搜索。
有谁知道为什么会发生这种情况?
使用ASP.NET 4.0 Framework(C#代码隐藏)通过网站访问报告,用户以PDF格式查看报告。