Google地图地理坐标无法正常工作

时间:2012-10-25 03:41:54

标签: google-maps coordinate

我正在尝试使用Google地图坐标在第三方网站的XML Feed中使用,该网站应自行创建地图。我使用URL http://maps.google.com/maps/geo?q=hong%20kong&output=json&oe=utf8&sensor=false(单击此链接将无法正常工作,但复制和粘贴确实如此)。这给了我点坐标114.1094970和22.3964280。如果我将这些坐标直接放入谷歌地图中它们不起作用,那么我做错了什么?

我的函数本身的代码如下,但它似乎是谷歌地图而不是我的代码的固有问题:

function getLatandLong($add)
{ 
$url = 'http://maps.google.com/maps/geo?q='.urlencode($add).'&output=json&oe=utf8&sensor=false';
$data = @file_get_contents($url);
$jsondata = json_decode($data,true);


if(is_array($jsondata )&& $jsondata ['Status']['code'] == 200){
  $output['lat'] = $jsondata ['Placemark'][0]['Point']['coordinates'][0];
  $output['lng'] = $jsondata ['Placemark'][0]['Point']['coordinates'][1];
 }


    return $output;
}

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

这些坐标是正确的,适用于Google地图。

我猜这是因为你以错误的顺序传递它们:
你需要先放入纬度坐标,如中所示 22.396428 114.109497

114.109497 22.396428

确实在查看代码片段时,你会错误地解析它们:JSON数据的经度是第一个,纬度是第二个......因此代码应该是:

  $output['lat'] = $jsondata ['Placemark'][0]['Point']['coordinates'][1];
  $output['lng'] = $jsondata ['Placemark'][0]['Point']['coordinates'][0];

答案 1 :(得分:0)

您可以使用google maps geo coordinates:

来使用jquery mobile app的这个示例

jsfiddle-google-maps-geo-coordinates

或使用自定义图片:jsfiddle-google-map-with-images

头是:

<link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
<!--link rel="stylesheet" href="/Content/jquery-mobile-responsive.css" /-->
<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
<script src="http://maps.google.com/maps/api/js?sensor=true&language=en"></script>
<script>
    $(document).bind("mobileinit", function () {
        $.mobile.ajaxEnabled = false;
    });

    $(Start);

    function Start() {
        $("#google_map .ui-collapsible-heading").click(function () {
            var locations = [
              ['<br/>Main Office', 31.590496, 34.561981, 4],
              ['Sensor 16<br/>User Name: 16_DE-1R', 31.590595, 34.562980, 5],
              ['Sensor 17<br/>User Name: 17_TEN-2MP', 31.590694, 34.563979, 3],
              ['Sensor 18<br/>User Name: 18_TEN-2MP', 31.590793, 34.564978, 2],
            ];

            var map = new google.maps.Map(document.getElementById('googleMap'), {
                zoom: 17,
                center: new google.maps.LatLng(31.590892, 34.561977),
                mapTypeId: google.maps.MapTypeId.ROADMAP
            });

            var infowindow = new google.maps.InfoWindow();

            var marker, i;

            for (i = 0; i < locations.length; i++) {
                marker = new google.maps.Marker({
                    position: new google.maps.LatLng(locations[i][3], locations[i][2]),
                    map: map
                });

                google.maps.event.addListener(marker, 'click', (function (marker, i) {
                    return function () {
                        infowindow.setContent(locations[i][0]);
                        infowindow.open(map, marker);
                    }
                })(marker, i));
            }
        });
    }
</script>

和身体:

<div data-role="page" class="type-interior">
<div data-role="header" data-theme="a">
    <a data-icon="back" href="#" rel="external">Back</a>
    <h1>Sensor</h1>
</div>
<div data-role="content">
    <div class="content-primary">
        <h2>Sensor: 16</h2>
            <div data-role="collapsible-set">
                <div id="google_map" data-role='collapsible' data-collapsed=true data-theme="b" data-content-theme="d">
                    <h1>Sensor Map</h1>
                    <div id="googleMap" style="width:100%; height:300px;"></div>
                </div>
            </div>    
        <ul data-role="listview" data-inset="true" data-theme="b">
            <li data-role="list-divider"></li>                
            <li><a href="#" rel="external">Configure Comm</a></li>
            <li><a href="#" rel="external">Measurements</a></li>
            <li><a href="#" rel="external">Users</a></li>
        </ul>
    </div>
    <div class="content-secondary">
        <div data-role="collapsible" data-collapsed="true" data-theme="b" data-content-theme="d">
                <h3>More Options</h3>
                <ul data-role="listview" data-theme="c" data-dividertheme="d">
                    <li data-role="list-divider">Actions</li>
                    <li><a href="/Home/UserList?back=Index" rel="external">Add User</a></li>
                    <li><a href="#" rel="external">Edit Sensor</a></li>
                    <li><a href="#" rel="external">Delete Sensor</a></li>
                </ul>
        </div>
    </div>
</div>
<div data-role="footer" data-theme="a">
    <h4>Mobile</h4>
</div>