2015-12-04 32 views
0

我使用谷歌地理編碼將地址轉換爲緯度/經度座標,然後在我的數據庫搜索附近的其他'物品'(實際存儲地址)。這是工作,我'地點'foreach循環工作正常(如果我看看控制檯,我看到一個數組)。但是當我去添加標記時,什麼也沒有顯示出來。我沒有得到下面的代碼的任何錯誤,但如果我console.log(lat)它顯示NaN。谷歌地圖標記不顯示與數據庫中的多個緯度/經度座標

根據var'myLatlng',地圖顯示並正確居中,但沒有製造商顯示。我在SO(HERE)上看到,地理編碼創建了一個字符串,因此您需要將字符串解析爲浮點。但我下面的嘗試不起作用。

我正在使用laravel 5. 如果你想看看我如何得到我的經緯度座標,請參閱我對自己的問題的回答HERE。 我template.blade.php頁有這樣的:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key=MYKEY&signed_in=true&libraries=places"></script> 

頁我有圖有以下這些腳本標記腳本。

下面是我有地圖的頁面的相關代碼。 articles.index.blade.php

@section('footer') 
<script> 
function initialize() { 

var map_canvas = document.getElementById('map_canvas'); 

var myLatlng = new google.maps.LatLng(parseFloat({{ $article->lat }}),parseFloat({{ $article->lng }})); 

var map_options = { 
    center: myLatlng, 
    zoom: 10, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
} 
var map = new google.maps.Map(map_canvas, map_options) 

var locations = [ 
@foreach($articles as $article) 
    [{{$article->lat}}, {{$article->lng}}] 
@endforeach 
]; 

var lat = parseFloat(locations[0]); 
var lon = parseFloat(locations[1]); 

for (i = 0; i < locations.length; i++) { 
    var location = new google.maps.LatLng(lat, lon); 

    var marker = new google.maps.Marker({ 
     position: location, 
     map: map, 
    }); 
} 

} 

google.maps.event.addDomListener(window, "load", initialize); 
</script> 
@stop 

回答

1

如果我理解正確。你有這個'地點'陣列。對?這些是標記出現的位置。但是,如果我沒看錯,你可以有一個語法錯誤在這行:

var locations = [ 
@foreach($articles as $article) 
    [{{$article->lat}}, {{$article->lng}}], //YOU NEED A COMMA TO SEPARATE EACH ELEMENT 
@endforeach 
]; 

可能的API不理解,沒有逗號分隔每個孩子那怪異的數組:P

我想你嘗試這種不同的邏輯,看看它是否工作在這一部分:

//var lat = parseFloat(locations[0]); REMOVE THIS 
//var lon = parseFloat(locations[1]); AND THIS 

for (i = 0; i < locations.length; i++) { 
    var location = new google.maps.LatLng(locations[i][0], locations[i][1]); 

    var marker = new google.maps.Marker({ 
     position: location, 
     map: map, 
    }); 
} 

保留類型爲字符串,無需轉換浮動。

+0

謝謝。位置數組顯示在我的控制檯中。現在(感謝您的回答)每個座標後都有一個逗號,但是...仍然沒有標記?如果我console.log(拉特)現在我得到一個座標,而不是NaN。 –

+0

我有個問題。位於每個數組中的數字如下所示:[「x.xxxxxxxx」,「-x.xxxxxx」]?是格式? –

+0

傳奇!是的,新的邏輯運作,爲什麼? –

相關問題