通过javascript操纵地理编码webservices结果?

时间:2010-03-11 16:41:22

标签: javascript google-maps

使用

http://maps.google.com/maps/api/geocode/json?address=xyz 我们得到一个json文件 我想知道如何在javascript中设置结果?如何在javascript中创建结果对象?

http://code.google.com/apis/maps/documentation/geocoding/index.html#JSONParsing 这并没有真正解释他们如何获得myJSONResult

2 个答案:

答案 0 :(得分:1)

您可以使用eval将JSON解析为JavaScript对象,但出于安全原因,不建议这样做。使用a JSON parser将JSON字符串转换为可以操作的JavaScript对象。

使用eval

myJSONResult = eval("{}");

使用上面链接的解析器:

myJSONResult = JSON.parse("{}");

答案 1 :(得分:1)

获取JSON的方式是使用AJAX检索。这可以使用hand coded JavaScript来完成,但使用jQuery要容易得多。这是一个简单的例子:

            <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
            <script type="text/javascript">
            $(document).ready(function() {
                $.ajax({ url: "http://maps.google.com/maps/api/geocode/json",
                         type: "GET",
                         dataType: "json",
                         data: { address: "1600+Amphitheatre+Parkway,+Mountain+View,+CA", sensor: "false" },
                         success: function(data, textStatus, XMLHttpRequest) {
                             console.log(textStatus);
                             alert(data);
                         },
                         error: function(XMLHttpRequest, textStatus, errorThrown) {
                             console.log(textStatus);
                         }});
            });
            </script>

但是这将 NOT 工作,因为same origin policy。解决方法是使用您选择的服务器端语言(Perl,PHP,ColdFusion,ASP)充当代理。这样url值将是“yourproxy.php”,“yourproxy.cfm”,“yourproxy.asp”或其他什么。该脚本只是接收它收到的请求,充当用户代理将请求发送给Google并检索响应(也就是上面代码中url值的URL),并将结果发送到您的脚本。 / p>

jQuery库为您处理JSON处理,或者您可以使用Bob提供的信息以及上面列出的手动AJAX。请注意,手动AJAX需要相同的代理解决方案才能从Google获取信息。

另请注意,您链接到的地理编码API并非适用于大量动态查询。他们引导您转到API V2 Client GeocoderAPI V3 Client GeocoderMaps API for Flash Client Geocoder