私は関数外のスコープ内でposition.coordsを使用しようとしていますが、グローバルスコープ内の値を移動して関数スコープ外に呼び出すことはできません。私はウィンドウ変数を含む多くのソリューションを試しました。この場合、geolocalisationは、新しいgoogle.maps.LatLng(iplat、iplong)がnullです。誰かが関数getLocationスコープの外にposition.coordsを入れる方法を甘くすることができますか?私の機能の範囲外の変数を設定するには?
function getLocation(position)
{
window.iplat = parseFloat(position.coords.latitude);
window.iplong = parseFloat(position.coords.longitude);
}
function errorFunction(position) {
alert('Error!');
}
var geocoder;
var address;
var userlocation;
var curloc;
google.load("maps",'3',{other_params:'sensor=true'});
google.setOnLoadCallback(function()
{
if (google.loader.ClientLocation)
{
geocoder = new google.maps.Geocoder();
//html5
if(navigator.geolocation) {
navigator.geolocation.getCurrentPosition(getLocation);
}
else
{
curloc = google.loader.ClientLocation;
iplat=parseFloat(curloc.latitude);
iplong=parseFloat(curloc.longitude);
}
var latlng = new google.maps.LatLng(iplat, iplong);
if (geocoder) {
geocoder.geocode({'latLng': latlng},function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[1]){
country_code=results[1]....;
}
} else {
alert("Geocoder failed due to: " + status);
}
});
}
alert(country_code+":"+iplat+"||"+iplong); <--- NULL VALUES
}
});
Zlatevが正しい。あなたの問題は「getLocationのスコープ外の変数を設定しています」ではなく、getLocation()より前にその場所を使用しようとするコードが実行されるという事実にあります。 – Nickolay