2013-02-06 111 views
2

我正在通過JSON提取標記數據。 當我發展我的本地副本我在一個JS文件了這一點,並說這就是用獲取JSON以使用Google Maps API 3

<script src="assets/js/locations.js"></script> 

我現在移動網站到CMS(ExpressionEngine),也因爲標記數據是動態的,我有一個JS現在擁有JSON數據的模板。

我現在必須包括該文件作爲(注意,沒有文件擴展名)

<script src="http://domain.com/map/locations"></script> 

這裏是JSON我有一個例子。

var locations = [ 

    [2, 51.39006, -0.02976, 'telecommunications', 'Test 2', '<div><img src="http://localhost/map/assets/graphics/info_window/default.jpg" alt="Test 2" width="105" height="70" style="float:right;"> <p>fdgj fdh uhfj bfd nibjdfjb ndfjn fd vfn vbjdc&nbsp; ifs n ei klmvf.cx fi fskn d</p></div>', '<a href="http://www.yahoo.com" target="_blank">Read more</a>' ], 
    [1, 51.51400, -0.12002, 'transport', 'Test map marker', '<div><img src="{image:url:thumb}" alt="Test map marker" width="{image:width:thumb}" height="{image:height:thumb}" style="float:right;"> <p>eubnglrsk nekfldb jndklvcbv jdnfhl kvbmd klbndvl kbjn dkbnm lkd nbmfljeb ygdjfjn</p></div>', '<a href="http://www.google.com" target="_blank">Read more</a>' ] 

]; 

這是地圖

var markers = []; 

    // Looping through the JSON data 
    for (var i = 0; i < locations.length; i++) { 

     // Creating a marker and putting it on the map 
     var marker = new google.maps.Marker({ 
      position: new google.maps.LatLng(locations[i][1], locations[i][2]), 
      map: map, 
      title: locations[i][4], 
      icon: iconSrc[locations[i][3]] 
     }); 
     markers.push(marker); 


     google.maps.event.addListener(marker, 'click', (function(marker, i) { 
      return function() { 
       infoWindow.setContent("<div class='cont_box' id='" + locations[i][0] + "'>" + "<h2>" +locations[i][4] + "</h2>" + "<div class='cont'>" + locations[i][5] + "</div><div style='clear:both;'></div><div class='link'>" + locations[i][6] + "</div></div>"); 
       infoWindow.open(map, marker); 
      } 
     })(marker, i)); 

    }// END for loop 

顯然錯誤,當我引用由CMS提供的JSON數據我得到的標記環是::

的ReferenceError:位置不是定義

該URL是有效的,只是它似乎並沒有像當我使用JS文件時被拉入。

我不知道在地圖JS代碼本身內調用文件是否會更好。

我如何能做出這樣的工作將是巨大的

+0

請發佈一個鏈接,看起來這裏的問題與你的內容管理系統比谷歌地圖更相關,如果不知道你的CMS創建了什麼,就不可能回答。 –

+0

@ Dr.Molle我認爲這可能是我沒有調用實際的文件擴展名。我不認爲這與CMS或谷歌地圖有什麼關係,這就是爲什麼我想看看其他方式拉動JSON – zizther

+0

@Dr。Molle我明天會爲你舉個例子 – zizther

回答

0

我有兩個想法。

    在腳本標籤
  1. 聲明的類型(你知道,如果你的整個頁面是HTML5?):
<script type="text/javascript" src="http://domain.com/map/locations"></script> 

我的另一個想法是加載代碼數據:

var xhr = new XMLHttpRequest(); 
xhr.open('GET', 'http://domain.com/map/locations', true); 
xhr.onload = function() {load you markers here} 
}; 
xhr.send(); 
0

確保,在你的HTML的腳本,你採購的「locations.js」腳本,你來源,創建映射腳本之前任何建議。使用Firebug或Chrome控制檯,確保兩個腳本都正確地被瀏覽器加載。

查看加載這些腳本的html代碼段會很有幫助。

而且,你的意思寫:

<script src="http://domain.com/map/locations.js"></script> 

上面,而不是:

<script src="http://domain.com/map/locations"></script> 
+0

感謝你的回覆,我在地圖JS之前加載了位置JSON。腳本的前後標籤是正確的,CMS不會爲模板生成擴展,所以爲JS文件生成的URL是http://domain.com/map/locations(最後沒有.js) – zizther