谷歌地图中标记的json格式要求

时间:2012-05-16 06:57:05

标签: json google-maps jquery

我有一个json文件,如:{ total: 86, success: true, "rows": [ {"a1_id":"3231VB8",等等。

我的问题是,当使用jquery从这个json文件中输入谷歌地图中的标记时,在json文件开头用<total: 86, success: true, "rows":>替换<"markers":>之前,它不会这样做。

确实没问题,但是当我这样做时,来自同一个url /文件的另一个json请求被破坏了。

问题:我该如何处理?有没有办法改变gmap代码来处理我的json文件或sh:

function(data) { 
    $.each( data.markers, function(i, m) {
            $('#map_canvas').gmap('addMarker', { 'position': new google.maps.LatLng(m.latitude, m.longitude), 'bounds':true } );

2 个答案:

答案 0 :(得分:0)

所以基本上你要问如何重命名&#34;行&#34;来自JSON的属性是&#34;标记&#34;,因为&#34;标记&#34;是JS / jQuery代码的特定部分使用的是什么?并且您需要将更改放在该代码中,以便现有的JSON可以像其他进程一样使用吗?

如果是这样,为什么不在JS / jQuery代码中进行以下小改动以引用&#34;行&#34;属性而不是&#34;标记&#34;:

...
    $.each( data.rows, function(i, m) {
...

唯一的变化是传递给$.each()的第一个参数。 &#34;总计&#34;和&#34;成功&#34;实际上您需要删除JSON中的参数,因为它们会被您所显示的代码(在我的更改之前和之后)忽略。

如果由于某种原因你需要实际修改data对象,我假设它是通过解析JSON创建的,你可以尝试这样的事情:

    data = { "markers" : data.rows };

也就是说,创建一个具有单个属性的新对象&#34; markers&#34;,它引用&#34;行&#34;来自原始对象的数组,然后重新分配data变量以指向新对象。然后只需按原样使用$.each()

答案 1 :(得分:0)

使用JSONLint验证我的JSON输出后,我收到了在字符串“total”和“success”周围添加引号的建议。所以我做了,JSON输出正确验证。

这导致ExtJs和Google Maps接受我的JSON文件。

要记住:如果一个应用程序正在接受您的JSON(ExtJs),那么也不会说另一个应用程序也是如此。 (谷歌地图)。