【问题标题】:Parsing YouTube API XML response with jQuery for Google Map使用 jQuery 为 Google Map 解析 YouTube API XML 响应
【发布时间】:2011-05-10 14:57:21
【问题描述】:

我正在尝试使用 jQuery 解析来自 YouTube API 的 XML 响应。我的目标是从结果中获取 url 链接和地理标记数据,并将标记插入谷歌地图。每个标记都将在 infoWindow 对象中嵌入一个 YouTube 视频。我向 YouTube 服务器发出的 API 请求要求在某些坐标 100 公里范围内提供带有地理标签数据的视频。现在我只是在处理一个本地文件。有人对解析 XML 并将视频添加到谷歌地图有任何建议吗?目前我正在尝试一种多维数组方法。 已知问题: 我的“latLng”变量未定义。它不应该是。这是我解决这个问题的少数线索之一。 有什么建议吗?

我的代码:

<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <style type="text/css">
        html {
            height: 100%
        }

        body {
            height: 100%;
            margin: 0px;
            padding: 0px
        }

        #map_canvas {
            height: 100%
        }
    </style>
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true">
    </script>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript">
    </script>
    <script type="text/javascript">

        $(document).ready(function() {
            $.get("videos.xhtml", "xml", function(xml) {
                $(xml).find("entry").each(function() {
                    var id = $(this).children('id').text();
                    var content = $(this).children('content').text();
                    var vid = $(this).children("link [rel=alternate]").attr("href");
                    var location = $(this).children('georss:where').children('gml:Point').children('gml:pos').text().split(" -").join(",");

                    var marker = new Array(vid, location);
                    var markers = new Array();
                    markers.push(marker);
                    var latLng = new google.maps.LatLng(markers[0][1]);
                    var markers = new Array();
                    var myOptions = {
                        zoom: 19,
                        center: latLng,
                        mapTypeId: google.maps.MapTypeId.HYBRID
                    };
                    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

                    //var vidString = '<div style="width:450; height: 400;"><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/2A-fuFeRekE&rel=1"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/2A-fuFeRekE&rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object></div>';
                    //use arrays
                    for (a = 0; a < markers.length; a++) {
                        var vidArray = new Array(markers[a][0]);
                        var infoWindow = new google.maps.InfoWindow({
                            content: vidArray
                            // is not emebeded
                        });
                    }

                    for (i = 0; i < markers.length; i++) {
                        var newMarker = new google.maps.Marker({
                            position: markers[i][1],
                            map: map,
                            title: "Hello World"
                        });
                        var marker1 = Array();
                        marker1.push(newMarker);
                    }
                    for (b = 0; b < markers.length; b++) {
                        // how do I make it add more marker listener
                        google.maps.event.addListener(marker1[b], "click", function(){
                            infoWindow.open(map, marker1[b])
                        });
                    }

                    alert(vid);
                });
            });
        });

        //I need to convert to a string
    </script>
</head>
<body>
<div id="map_canvas" style="width:100%; height:100%">
</div>
</body>
</html>

【问题讨论】:

    标签: javascript jquery xml google-maps youtube-api


    【解决方案1】:

    对于 XML 文件,您应该了解“同源策略”。这意味着您不能从另一台服务器加载 XML 或 JSON 文件(理论上)。

    然而,jQuery 提供了 jsonP 函数来解决这个问题,或者您可以尝试替代 jquery-jsonp 脚本。

    http://api.jquery.com/jQuery.ajax/ https://code.google.com/p/jquery-jsonp/

    再见。

    【讨论】:

    • 谢谢,我知道这个限制,但现在我在硬盘驱动器上使用静态 xml 文件。我只是想让这个概念发挥作用。关于我的代码本身的任何建议?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多