如何将latlng坐标值分配给JS变量

时间:2014-05-12 20:26:24

标签: javascript html google-maps-api-3

您好我正在从w3schools学习Google Map API。我是JS新手,希望将location.lat()location.lng()分配给JavaScript变量。这是复制的教程代码。我试图将值分配为;

var latid=location.lat();但我认为lat()没有返回任何内容。

我必须在数据库中保存坐标。如果这是错误的方法,那么请告诉我如何在我的数据库中保存lnglat坐标。

<!DOCTYPE html>
<html>
<head>
    <script src="http://maps.googleapis.com/maps/api/js?key=mykeyishidden&sensor=false"></script>
    <script>
        var map;
        var myCenter=new google.maps.LatLng(51.508742,-0.120850);

        function initialize() {
            var mapProp = {
                center:myCenter,
                zoom:5,
                mapTypeId:google.maps.MapTypeId.ROADMAP
            };

            map = new google.maps.Map(document.getElementById("googleMap"),mapProp);

            google.maps.event.addListener(map, 'click', function(event) {
                placeMarker(event.latLng);
            });
        }

        function placeMarker(location) {
            var marker = new google.maps.Marker({
                position: location,
                map: map,
            });

            var infowindow = new google.maps.InfoWindow({
                content: 'Latitude: ' + location.lat() + '<br>Longitude: ' + location.lng()
            });

            infowindow.open(map,marker);
        }

        google.maps.event.addDomListener(window, 'load', initialize);
    </script>
</head>

<body>
    <div id="googleMap" style="width:500px;height:380px;"></div>
</body>
</html>

2 个答案:

答案 0 :(得分:0)

我看到您正在尝试通过location.lat()访问位置,但在整个脚本上看不到任何位置。我期待看到像

这样的东西
  

google.maps.GeocoderGeometry.location

在某处实例化。

为了您的目的,我认为如果它是您的意思,最好尝试以下内容:

google.maps.LatLng.lat()  // Returns latitude
google.maps.LatLng.lng()  // Returns longitude

答案 1 :(得分:0)

我跑了你的页面并查看了控制台。 在placeMarker(location)中,location具有这些属性。
A: -1.8017578125 k: 49.03786794532644

你的lat()和lng()实际上是返回值,而不是零!因此,例如,如果您需要在程序中的其他位置存储这些内容,您的代码会添加这些内容...

<script>
  var map;
  var myCenter=new google.maps.LatLng(51.508742,-0.120850);
  var myLatLng;
  var myLatLngs[];

  ...

  function placeMarker(location) {
            ...

        myLatLng = {lat:location.lat(),lng:location.lng()};
        console.log("Lat: " + myLatLng.lat + "  Lng: " + myLatLng.lng);
        myLatLngs.push(myLatLng);

        infowindow.open(map,marker);
}
...

现在你有myLatLng存储纬度和经度,myLatLngs是每次用户点击并按顺序存储这些坐标的数组,以及console.log以显示给你在控制台中确认。

如果您不知道如何通过查看此主题来访问浏览器控制台:https://webmasters.stackexchange.com/questions/8525/how-to-open-the-javascript-console-in-different-browsers