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)
这不起作用 - 未捕获TypeError:str.slice不是函数。
示例: 这确实有效:
var str;
str = "(28.7035649, -105.9697253)";
str = str.slice(1, -1);
+str+ (print out the result)
打印出 28.7035649,-105.9697253 这是正确的 - 没有括号。
这里发生了什么的线索?
答案 0 :(得分:3)
返回值是object
,对象没有定义slice
方法但字符串确实是最后一个示例的原因。
在第二个示例中,您将相同的point
对象分配给str
变量,该变量不会转换为字符串。
答案 1 :(得分:0)
答案 2 :(得分:0)
正如其他答案所述,slice是字符串的方法,你在对象上使用它。你能做什么:
point.toString().slice(1, -1);
请参阅文档LatLng class。
编辑:
请注意point.toString()
不会更改实际point
变量,返回表示该点的字符串,以便您可以将其分配给新变量,例如var pointString = point.toString()
。
pointString.slice(1, -1)
或point.toString().slice(1, -1)
也是如此,您需要一个变量来保存该数据,例如var myPoint = point.toString().slice(1, -1)
。您也可以重复使用point
变量,例如point = point.toString().slice(1, -1)
,但是您忽略了对原始点对象的引用。
答案 3 :(得分:0)
问题是您正在尝试访问LatLng对象不存在的方法。同样注意这是重复的问题How do I stringify a google LatLng object?
很快使用下面的解决方案来对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);
}