我使用OpenLayers生成格式化的纬度;像这样:
OpenLayers.Util.getFormattedLonLat(bounds.top, 'lat');
生成字符串57°42'32"N
。 bounds.top
的值为十进制度为57.70889832055789。
这很好。但是如何使用OpenLayers进行相反的操作呢?如果用户输入类似57°42'32"N
的字符串,我如何使用OpenLayers将其转换为十进制度数,例如OpenLayers.LonLat
或OpenLayers.Bounds
?
答案 0 :(得分:2)
解析字符串并从Degrees,minutes和seconds计算有理数就足够了,如:
var input = "50° 20' 12''";
var coord = input.match(/[0-9]+/g);
var lat = parseFloat(coord[0]) + coord[1]/60.0 + coord[2]/3600.0 ;
if(/S|W/i.test(input)) lat *= -1;
当然,您应检查输入的正确性,并在3个字段0处启动数组。