Хм, я проверял везде, но все еще не смог вырезать его ... с моего сайта Google Maps, который работает, но мои попытки "разрезать" переменную "точку" не дают.
for (var i = 0; i < markers.length; i++) {
var point = new google.maps.LatLng(
parseFloat(markers[i].getAttribute("lat")),
parseFloat(markers[i].getAttribute("lng")));
< Сильный > Пример: сильный > + точка + (распечатать результат)
Это выдает (28.7035649, -105.9697253) , что правильно.
Итак, я хочу снять скобки с помощью slice ()
Пример:
point = point.slice(1, -1);
+point+ (print out the result)
Это не работает - Uncaught TypeError: point.slice не является функцией.
Пример:
var str;
str = point;
str = str.slice(1, -1);
+str+ (print out the result)
Это не работает - Uncaught TypeError: str.slice не является функцией.
< Сильный > Пример: сильный > Это работает:
var str;
str = "(28.7035649, -105.9697253)";
str = str.slice(1, -1);
+str+ (print out the result)
Это выдает 28.7035649, -105.9697253 , что правильно - без скобок.
Есть какие-то подсказки, что здесь происходит?
5 ответов
На мой вопрос "Slice () не работает должным образом" был получен ответ, и для других вопросов, касающихся Google Maps, потребуется новый вопрос.
Чтобы уточнить ответ madox2 при правильном синтаксисе, он не работает с Google Maps " point ":
point.toString (). slice (1, -1); Распечатайте точку и скобки все еще там!
Следующее действительно работает:
var newpoint = point.toString (). slice (1, -1); Распечатайте newpoint и скобки исчезли!
Я не получил объяснения ПОЧЕМУ, но тем не менее я благодарю вас всех за ваши ответы. (Вернись PHP - все прощено!)
Проблема в том, что вы пытаетесь получить доступ к несуществующему методу для объекта LatLng. Также примечание , это дублирующий вопрос Как я могу преобразовать в строку? объект Google LatLng?
Кратко используйте приведенное ниже решение, чтобы привести в порядок объект LatLng (источник: ссылка выше) и применить метод slice
к результату функции ниже.
function formatData(data) {
//data is an array of many LatLng objects
newData = [];
for(var i = 0; i < data.length; i++) {
var obj = new Object();
obj['lat'] = data[i].lat();
obj['lon'] = data[i].lng();
newData.push(obj);
}
return JSON.stringify(newData);
}
Как упоминалось в других ответах, slice - это метод строки, и вы используете его на объекте. Что ты можешь сделать:
point.toString().slice(1, -1);
См. документы класс LatLng.
РЕДАКТИРОВАТЬ:
Обратите внимание, что point.toString()
не изменяет фактическую переменную point
, она возвращает строку, которая представляет точку, так что вы можете назначить ее новой переменной, например, {{Х2}} .
То же самое происходит с pointString.slice(1, -1)
или point.toString().slice(1, -1)
, вам нужна переменная для хранения этих данных, например {{Х2}} . Вы также можете повторно использовать переменную point
, например point = point.toString().slice(1, -1)
, но потеряете ссылку на исходный точечный объект.
Класс LatLng имеет методы lat()
и lng()
, которые можно использовать для получения следующих значений:
var lat = point.lat();
var lng = point.lng();
См. документы.
Возвращаемое значение в вашем первом примере - object
, и у объектов не определен метод slice
, но есть строки, поэтому последний пример работает.
Во втором примере вы присваиваете тот же объект point
переменной str
, которая не преобразуется в строку.
Похожие вопросы
Связанные вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.