我正在尝试获取用户的一般位置,原因无关紧要,但我无法使用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
答案 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>