2012-06-01 65 views
0

我有一個非常令人沮喪的錯誤,它更接近分辨率,但不是那麼完美。我試圖在基於經緯度座標的經緯度座標的Google Map上放置標記。在Google地圖上放置標記時出現的JavaScript錯誤

感謝一些見解,它看起來像我不是很熟悉的AJAX,是從模型中獲取這些座標,然後使用它將標記放置在地圖上的方法。在看從結果的源代碼,被檢索的座標,但錯誤是通過螢火蟲造成:

syntax error 
[Break On This Error] 

function loadMarkers(stories): 

/report/all/ (line 1172, col 29) 

任何深入瞭解什麼可能會造成這一點,什麼是可能的解決方案將受到歡迎。就像參考一樣,這是處於開發模式,所有的座標都在同一個地方,可能太多了。地圖不再使用「loadMarkers」函數顯示。

代碼如下:

<script> 
function mainGeo() 
    { 
     if (navigator.geolocation) 
      { 
       navigator.geolocation.getCurrentPosition(mainMap, error, {maximumAge: 30000, timeout: 10000, enableHighAccuracy: true}); 
     } 
     else 
     { 
       alert("Sorry, but it looks like your browser does not support geolocation."); 
     } 
    } 




var map; 



function mainMap(position) 
{ 
     // Define the coordinates as a Google Maps LatLng Object 
     var coords = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); 

     // Prepare the map options 
     var mapOptions = 
     { 
        zoom: 15, 
        center: coords, 
        mapTypeControl: false, 
        navigationControlOptions: {style: google.maps.NavigationControlStyle.SMALL}, 
        mapTypeId: google.maps.MapTypeId.ROADMAP 
     }; 

     // Create the map, and place it in the map_canvas div 
     map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); 

     // Place the initial marker 
     var marker = new google.maps.Marker({ 
        position: coords, 
        map: map, 
        title: "Your current location!" 
     }); 
    } 


function error() { 
       alert("You have refused to display your location. You will not be able to submit stories."); 
     } 

mainGeo(); 

var stories = [{% for story in stories %} 
       {{story.latitude}},{{story.latitude}}, {% endfor %}]; 


    loadMarkers(stories); 

function loadMarkers(stories): 
for (var s in stories) { 
    var story = story[s]; 
    var point = new google.maps.LatLng(story[s]); 
    var marker = new google.maps.Marker({position: point, map: map}); 
} 

編輯:修補的代碼,但獲取相同的錯誤

var stories = [{% for story in stories %} 
       ({{story.latitude}},{{story.longitude}}) {% endfor %}]; 


    loadMarkers(stories); 

function loadMarkers(stories): 
    for (var s in stories) { 
     var story = story[s] 
     var point = new google.maps.LatLng(story.latitude, story.longitude); 
     var marker = new google.maps.Marker({position: point, map: map}); 
    } 

回答

0

我不知道什麼是存儲在故事和故事,但製作var point時,LatLng需要用兩個參數構造,如(number1,number2)或(string1,string2),其中字符串表示數字。

如果故事是單個字符串,比如說「39.39,20.21」,您只需要split(",")即可獲得兩個數字字符串。

myString = "40.7, -70.4"; 
    myStringValues = myString.split(","); 
    var point = new google.maps.LatLng(myStringValues[0], myStringValues[1]); 

而且緯度重複var stories,不應該一個是經度?

+0

更改良好的捕獲。上面的修改代碼。仍然導致相同的錯誤。 「故事」var的每個單獨對象都有一個逗號分隔的經緯度。 –

相關問題