Я становлюсь "больным" в простой проблеме. Я использую OpenLayers для отображения карты с базовым слоем карты google. В качестве пользовательского предложения я делаю запрос к API геокодирования google с адресом, предоставленным пользователем.
Проблема:
Ответ 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 карты google (на другой странице).
Любая помощь? Это можно решить в рубине, например, в методе bebore_save, который форматирует координаты или на стороне клиента с javascript/jquery
С уважением.
Проблема была решена с преобразованием обратного порядка перед показом второй карты google.
Как это:
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
);
Преобразование чисел в строку:
var myStringLat = 123456.123654 + "";
Затем введите первые две цифры:
var myStringLat2Digits = myStringLat.substr(1, 2);
Затем конвертируйте обратно в номера:
var myNumberLat2Digits = Number(myStringlat2Digits, 10);
OpenLayers.Layer.Google
не является картой Google. OpenLayers имеет письменное согласие на использование данных от Google, но, боюсь, вы этого не сделаете.