我在一个简单的问题中变得“生病”。我正在使用OpenLayers来显示带有谷歌地图基础层的地图。作为用户建议,我正在使用用户提供的地址向Google地理编码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
问候。
答案 0 :(得分:0)
将数字转换为字符串:
var myStringLat = 123456.123654 + "";
然后得到前两位数字:
var myStringLat2Digits = myStringLat.substr(1, 2);
然后转换回数字:
var myNumberLat2Digits = Number(myStringlat2Digits, 10);
答案 1 :(得分: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
);