0

我在一个简单的问题上“生病”了。我正在使用 OpenLayers 显示带有谷歌地图基础层的地图。作为用户建议,我正在使用用户提供的地址向谷歌地理编码 API 发出请求。

问题:

google api 响应是这样的:

lat: "-34.8836111"
lon: "-56.1819444"

之后,我必须创建一个 LonLat OpenLayers 对象并进行转换,如下所示:

var lonLat = new OpenLayers.LonLat(position.coords.longitude,
                                    position.coords.latitude)
                      .transform(
                                  new OpenLayers.Projection("EPSG:4326"), //transform from WGS 1984
                                              window.user_map.getProjectionObject() //to Spherical Mercator Projection
                                            );

问题是 lonLat 格式的精度不同。

lat: -4148075.5841099103
lon: -6254145.441513423

我只需要前两个整数数字就可以使用谷歌地图 API(在另一个页面中)进行显示。

有什么帮助吗?这可以在 ruby​​ 中解决,例如在格式化坐标的 bebore_save 方法中,或者在客户端使用 javascript/jquery

问候。

4

2 回答 2

0

将数字转换为字符串:

var myStringLat = 123456.123654 + "";

然后得到前两位数:

var myStringLat2Digits = myStringLat.substr(1, 2);

然后转换回数字:

var myNumberLat2Digits = Number(myStringlat2Digits, 10);
于 2013-10-22T22:34:05.977 回答
0

在显示第二个谷歌地图之前,通过逆序变换解决了这个问题。

像那样:

var lonLat = new OpenLayers.LonLat(position.coords.longitude,
                                position.coords.latitude)
                  .transform(
                             window.user_map.getProjectionObject(), //transform from WGS 1984
                                          new OpenLayers.Projection("EPSG:4326") //to Spherical Mercator Projection
                                        ); 
于 2013-10-24T03:54:39.193 回答