2014-09-23 65 views
1

一切都应该很好,但不是。没有控制台错误,没有。我的对象结果在控制台中正确显示,如果手动输入坐标,我的标记设置正确。Gmaps LatLng不会读取我的数据

但是,如果我将数据传递给LatLng与我的对象,零结果。

这在控制台返回 “46.00,45.00”:

var data = jQuery.parseJSON(data); 
console.log(data[0].coords); 

,这建立了我的标志为谷歌地图:

var latLng = new google.maps.LatLng(46.00,45.00); 
var marker = new google.maps.Marker({ 
    position: latLng, 
    map: map 
}); 

BUT!如果我把它写像这样的事情发生:

var data = jQuery.parseJSON(data); 

var latLng = new google.maps.LatLng((data[0].coords)); 
var marker = new google.maps.Marker({ 
    position: latLng, 
    map: map 
}); 

回答

5

你只是传递一个参数与data[0].coords为字符串,当你需要通过2个参数为数字,如documentation规定:

LatLng(lat:number, lng:number, noWrap?:boolean) 

你需要分割的coords变量之前:

var coordinates = data[0].coords.split(","); 
var latLng = new google.maps.LatLng(coordinates[0], coordinates[1]); 
+1

或者...'变种的latLng =新google.maps.LatLng.apply(NULL,数据[0] .coords.split( “”));' – 2014-09-23 08:31:06

+0

@FlorianMargaine吨帽子不太可读。此外,它可能会打破一些优化。 – 2014-09-23 08:31:59

+0

@FlorianMargaine多数民众赞成在多精确,谢谢 – 2014-09-23 08:33:12

1

你完全传递data.coords[0]对象到新google.maps.LatLng

你应该分裂纬度和经度和下面通过。

var data = jQuery.parseJSON(data); 

var latLng = new google.maps.LatLng(data[0].coords[0],data[0].coords[1]); 
var marker = new google.maps.Marker({ 
    position: latLng, 
    map: map 
});