使用谷歌地图获取用户的一般位置

时间:2017-12-04 19:00:43

标签: javascript html json google-maps

我正在尝试获取用户的一般位置,原因无关紧要,但我无法使用API​​获取其位置。我试图解析与IP相关的数据,但如果我在initMap()函数之外有$ .getJson(),则变量不会改变,如果在initMap()内,initMap()不是被认为是一种功能。

tl:dr - 如何从initMap()函数中调用$ .getJSON?

这是我尝试过的:

var check: String = "something here"
 var key: String = "KEY is"
/*Warning coming on following statement*/
 var str : String = key.replace("KEY", "ABDS-ASDSA-DSSS")?:check

2 个答案:

答案 0 :(得分:0)

您的问题是您的通话位置(在数据结构内),以及通话结束时的分号。

试试这个

    <div id="map" style="width: 100%; height: 100%;; "></div>
    <!-- G-Maps box-sizing: border-box; -->

    <script>
        var usrLat = 0;
        var usrLon = 0;

        function initMap() {

            $.getJSON("https://freegeoip.net/json/", function (data) {
                                    usrLat = parseFloat(data.latitude);
                                    usrLon = parseFloat(data.longitude);
                                    console.log(usrLon + ", " + usrLat);
                                    });
            var map = new google.maps.Map(document.getElementById('map'), {
                zoom: 6,
                center: {lat: usrLat, lng: usrLon},
                mapTypeControl: true,
                scrollwheel: false,
                navigationControl: false,
                mapTypeControl: false,
                scaleControl: false,
                draggable: false,
                mapTypeId: google.maps.MapTypeId.ROADMAP,
                disableDefaultUI: true,
                mapTypeControlOptions: {
                style: google.maps.MapTypeControlStyle.DROPDOWN_MENU,
                mapTypeIds: ['roadmap', 'terrain']
                }
            });
        }

    </script>

答案 1 :(得分:0)

将其整理出来。感谢Phil和GeoCodeZip的帮助

<script>
            var usrLat = 0;
            var usrLon = 0;


            $.getJSON("https://freegeoip.net/json/", function (data) {
                var map = new google.maps.Map(document.getElementById('map'), {
                        zoom: 8,
                        center: {lat: parseFloat(data.latitude), lng: parseFloat(data.longitude)},
                        mapTypeControl: true,
                        scrollwheel: false,
                        navigationControl: false,
                        mapTypeControl: false,
                        scaleControl: false,
                        draggable: false,
                        mapTypeId: google.maps.MapTypeId.ROADMAP,
                        disableDefaultUI: true,
                        mapTypeControlOptions: {
                            style: google.maps.MapTypeControlStyle.DROPDOWN_MENU,
                            mapTypeIds: ['roadmap', 'terrain']
                        }
                });
            });
        </script>