获取JSON以使用Google Maps API 3

时间:2013-02-06 17:24:44

标签: javascript json google-maps google-maps-api-3

我通过JSON提取我的标记数据。 当我开发我的本地副本时,我在JS文件中使用

调用它
<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代码本身内调用该文件是否更好。

关于如何使这项工作的任何建议都很棒

2 个答案:

答案 0 :(得分:0)

确保在HTML脚本中,在获取创建地图的脚本之前,您将获取“locations.js”脚本。使用firebug或chrome控制台,确保浏览器正确加载这两个脚本。

查看加载这些脚本的html代码段会很有帮助。

另外,你的意思是写:

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

以上而不是:

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

答案 1 :(得分:0)

我有两个想法。

    脚本标签中的
  1. 声明了类型(你知道你的整个页面是否为html5?):
  2. <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();