谷歌地理编码API结果显示在地图上?

时间:2010-11-21 14:26:49

标签: php google-maps google-maps-api-3

我正在阅读谷歌的API,但没有看到那里的例子,所有其他Googled-by-me示例都有点陈旧(大约1-2岁,大多数是基于API密钥的:S)。

我想要一个文字输入。发送按钮。以及iframe。

如何使用我自己的输入在地图上显示位置?

此时我的iframe看起来像那样:

<iframe width="230" height="180" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="<?php echo $src ?>">

输入:

<input id="googleMaps" name="googleMaps" type="text" />

此刻我正在尝试使用XML(但据我所知,推荐使用JSON?),但我在iframe中获取XML文本,例如:

This document had no style information.
<GeocodeResponse>
<status>
OK
</status>
<result>
<type>
locality
</type>
<type>
political
</type>
<formatted_address>
(...)

如何将此数据传递给Google并获取地图? :)

非常感谢。

1 个答案:

答案 0 :(得分:1)

您需要使用Google地理编码API对地址进行反向地理编码以获取坐标,然后可以使用该坐标在地图上显示结果。例如,对于我的地址,我发布了地址参数,如下面的网址

中所示
http://maps.googleapis.com/maps/api/geocode/json?address=154+Metro+Central+Heights+London+UK&sensor=true

坐标可以从生成的JSON获得,如下所示

"geometry": {
      "location": {
        "lat": 51.5001524,
        "lng": -0.1262362
      }

获取JSON的PHP代码

<?php

$address = $_GET['address'];
$address=str_replace(" ","+",$address);
if ($address) {
    $json = file_get_contents('http://maps.googleapis.com/maps/api/geocode/json?address='.$address.
    '&sensor=true');
    echo $json;
}

?>

可以找到Javascript here。解析JSON的关键代码如下所示

$.getJSON("getjson.php?address="+address,
        function(data){
            lat=data.results[0].geometry.location.lat;
            lng=data.results[0].geometry.location.lng;
                        //.... more map initialization code
                 }
);

我已经为您之前的问题here设置了一个工作示例,它可以帮助您了解如何在地图上生成标记。如果您需要进一步澄清,请告诉我。