Поэтому у меня возникают проблемы при получении моего запроса getJSON о передаче глобальной переменной для адреса в URL. Я включил ниже метод Google для получения указанного адреса через его API, который я затем установил в глобальную переменную = globalStringAddress. Эта функция появляется после того, как пользователю предлагается согласиться на совместное использование местоположения.
var map, infowindow, globalStringAddress
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
center: {lat: 38.907, lng: -77.036},
zoom: 10
});
var infowindow = new google.maps.InfoWindow;
var geocoder = new google.maps.Geocoder;
// // Try HTML5 geolocation.
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
var pos = {
lat: position.coords.latitude,
lng: position.coords.longitude,
};
console.log(position.coords.latitude + ", " + position.coords.longitude);
// console.log(poslat + ", " + poslng);
var latlng = {lat: pos.lat, lng: pos.lng};
geocoder.geocode({'location': latlng}, function(results, status) {
if (status === 'OK') {
if (results[0]) {
map.setZoom(11);
var marker = new google.maps.Marker({
position: latlng,
map: map
});
globalStringAddress = results[0].formatted_address
console.log("address is : "+ globalStringAddress);
infowindow.setContent(results[0].formatted_address);
infowindow.open(map, marker);
var globalStringAddress = globalStringAddress.replace(/[\s]/g, '+').replace(/[,]/g, '%2C');
//var civicAPI ="https://www.googleapis.com/civicinfo/v2/representatives?address="+globalStringAddress+"&key=AIzaSyBwA2-va1J2oaO3IhPn2xqItnyUyhkfkqk";
console.log(globalStringAddress);
} else {
window.alert('No results found');
}
} else {
window.alert('Geocoder failed due to: ' + status);
}
});
infowindow.setPosition(pos);
infowindow.setContent('Cool House Loser');
infowindow.open(map);
map.setCenter(pos);
}, function() {
handleLocationError(true, infowindow, map.getCenter());
});
} else {
// Browser doesn't support Geolocation
handleLocationError(false, infowindow, map.getCenter());
}
console.log("address is : "+ globalStringAddress)
}
function handleLocationError(browserHasGeolocation, infoWindow, pos) {
infoWindow.setPosition(pos);
infoWindow.setContent(browserHasGeolocation ?
'Error: The Geolocation service failed.' :
'Error: Your browser doesn\'t support geolocation.');
infoWindow.open(map);
}
проблема возникает здесь при запросе getJSON. Я не могу получить переменную globalStringAddress для передачи в URL способом, который позволил бы ее выполнение. Я, вероятно, должен упомянуть, что я сделал некоторые изменения в функции initMap, пытаясь сделать его более удобным для URL, но результат постоянно https://www.googleapis.com/civicinfo/v2/representatives?address=[object%20Object]&key=xxx.
$(document).ready(function(globalStringAddress) {
$("#officials").click(function(globalStringAddress){
$.getJSON("https://www.googleapis.com/civicinfo/v2/representatives?address="+globalStringAddress+"&key=xxx", function(result){
window.localStorage.setItem('Senator1', result.officials[2].name),
window.localStorage.setItem('Senator2', result.officials[3].name),
Senator1= result.officials[2].name,
Senator2= result.officials[3].name,
$("#lobby").append(
"You're Senators are " + result.officials[2].name + " & " + result.officials[3].name,
" and you're Representative is " + result.officials[4].name),
// console.log(result.officials[3].channels[0].id),
$.each(result.officials , function(k , v){
$("#lobby").append(
// v.name +' - '+ v.address[0].line1 + " and ",
);
});
});
});
});
Это проблема позиционирования? Должен ли я объявить globalStringAddress как строку? Это проблема синхронизации? Любая стрелка в правильном направлении очень ценится, так как я немного новичок в модуляции