Javascript 检索全局变量
如何将Javascript 检索全局变量,javascript,geocoding,Javascript,Geocoding,如何将城市值检索到位置对象中 var city = ""; var state = ""; geocoder = new google.maps.Geocoder(); var latlng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); geocoder.geocode({ 'latLng': latlng }, function(results, status) { if (
城市
值检索到位置
对象中
var city = "";
var state = "";
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
geocoder.geocode({
'latLng': latlng
}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
//Check result 0
var result = results[0];
//look for locality tag and administrative_area_level_1
for (var i = 0, len = result.address_components.length; i < len; i++) {
var ac = result.address_components[i];
if (ac.types.indexOf("locality") >= 0) city = ac.long_name;
if (ac.types.indexOf("administrative_area_level_1") >= 0) state = ac.long_name;
}
}
});
var location = {lat: position.coords.latitude, lng: position.coords.longitude, city: city};
var city=”“;
var state=“”;
geocoder=新的google.maps.geocoder();
var latlng=新的google.maps.latlng(position.coords.latitude,position.coords.longitude);
地理编码({
“latLng”:latLng
},功能(结果、状态){
if(status==google.maps.GeocoderStatus.OK){
//检查结果0
var结果=结果[0];
//查找位置标记和管理区域级别1
对于(变量i=0,len=result.address\u components.length;i=0)city=ac.long\u name;
如果(ac.types.indexOf(“管理区\级别\ 1”)>=0)状态=ac.long\名称;
}
}
});
var location={lat:position.coords.lation,lng:position.coords.longitude,city:city};
对geocoder.geocode
的调用是异步的。在异步代码返回之前,代码执行到达var location
的声明;因此,城市尚未定义
更早声明位置,然后添加到回调函数中的location对象中
var location={lat:position.coords.latitude,lng:position.coords.longitude};
geocoder=新的google.maps.geocoder();
var latlng=新的google.maps.latlng(position.coords.latitude,position.coords.longitude);
地理编码({
“latLng”:latLng
},功能(结果、状态){
if(status==google.maps.GeocoderStatus.OK){
//检查结果0
var结果=结果[0];
//查找位置标记和管理区域级别1
对于(变量i=0,len=result.address\u components.length;i=0)location.city=ac.long\u name;
如果(ac.types.indexOf(“管理区\级别\ 1”)>=0)location.state=ac.long\名称;
}
}
});
您可以在前面声明位置
并在回调中使用它。像这样:
var city = "";
var state = "";
var location = {lat: position.coords.latitude, lng: position.coords.longitude}; // move `location` here
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
geocoder.geocode({
'latLng': latlng
}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
//Check result 0
var result = results[0];
//look for locality tag and administrative_area_level_1
for (var i = 0, len = result.address_components.length; i < len; i++) {
var ac = result.address_components[i];
if (ac.types.indexOf("locality") >= 0) {
city = ac.long_name;
location.city = city; // and assign the `city` field here
}
if (ac.types.indexOf("administrative_area_level_1") >= 0) state = ac.long_name;
}
}
});
function geocode(position, callback) {
var city = "";
var state = "";
var geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
geocoder.geocode({
'latLng': latlng
}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
//Check result 0
var result = results[0];
//look for locality tag and administrative_area_level_1
for (var i = 0, len = result.address_components.length; i < len; i++) {
var ac = result.address_components[i];
if (ac.types.indexOf("locality") >= 0) {
city = ac.long_name;
callback({
lat: position.coords.latitude,
lng: position.coords.longitude,
city: city
});
}
if (ac.types.indexOf("administrative_area_level_1") >= 0) state = ac.long_name;
}
}
});
}
geocode(position, function(location) {
// do whatever you would like to do with `location`.
})
var city=”“;
var state=“”;
变量位置={lat:position.coords.latitude,lng:position.coords.longitude};//在这里移动'location'
geocoder=新的google.maps.geocoder();
var latlng=新的google.maps.latlng(position.coords.latitude,position.coords.longitude);
地理编码({
“latLng”:latLng
},功能(结果、状态){
if(status==google.maps.GeocoderStatus.OK){
//检查结果0
var结果=结果[0];
//查找位置标记和管理区域级别1
对于(变量i=0,len=result.address\u components.length;i=0){
城市=ac.long\u名称;
location.city=city;//并在此处指定'city'字段
}
如果(ac.types.indexOf(“管理区\级别\ 1”)>=0)状态=ac.long\名称;
}
}
});
但是,这并不实用,因为回调是异步的。如果将地理编码封装到一个函数中会更好。像这样:
var city = "";
var state = "";
var location = {lat: position.coords.latitude, lng: position.coords.longitude}; // move `location` here
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
geocoder.geocode({
'latLng': latlng
}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
//Check result 0
var result = results[0];
//look for locality tag and administrative_area_level_1
for (var i = 0, len = result.address_components.length; i < len; i++) {
var ac = result.address_components[i];
if (ac.types.indexOf("locality") >= 0) {
city = ac.long_name;
location.city = city; // and assign the `city` field here
}
if (ac.types.indexOf("administrative_area_level_1") >= 0) state = ac.long_name;
}
}
});
function geocode(position, callback) {
var city = "";
var state = "";
var geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
geocoder.geocode({
'latLng': latlng
}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
//Check result 0
var result = results[0];
//look for locality tag and administrative_area_level_1
for (var i = 0, len = result.address_components.length; i < len; i++) {
var ac = result.address_components[i];
if (ac.types.indexOf("locality") >= 0) {
city = ac.long_name;
callback({
lat: position.coords.latitude,
lng: position.coords.longitude,
city: city
});
}
if (ac.types.indexOf("administrative_area_level_1") >= 0) state = ac.long_name;
}
}
});
}
geocode(position, function(location) {
// do whatever you would like to do with `location`.
})
函数地理编码(位置,回调){
var city=“”;
var state=“”;
var geocoder=new google.maps.geocoder();
var latlng=新的google.maps.latlng(position.coords.latitude,position.coords.longitude);
地理编码({
“latLng”:latLng
},功能(结果、状态){
if(status==google.maps.GeocoderStatus.OK){
//检查结果0
var结果=结果[0];
//查找位置标记和管理区域级别1
对于(变量i=0,len=result.address\u components.length;i=0){
城市=ac.long\u名称;
回拨({
纬度:位置坐标纬度,
lng:position.coords.longitude,
城市:城市
});
}
如果(ac.types.indexOf(“管理区\级别\ 1”)>=0)状态=ac.long\名称;
}
}
});
}
地理编码(位置、功能(位置){
//用“位置”做任何你想做的事情。
})