Javascript 函数声明不应放在块中
我的JavaScript(如下)非常不整洁,包含一个我无法解决的错误。错误在showPosition函数中(我在函数中有一个函数,这是不推荐的)。Javascript 函数声明不应放在块中,javascript,google-maps,geolocation,Javascript,Google Maps,Geolocation,我的JavaScript(如下)非常不整洁,包含一个我无法解决的错误。错误在showPosition函数中(我在函数中有一个函数,这是不推荐的)。 我刚刚开始尝试JavaScript,如果这是一个简单的问题,我深表歉意。我还提供了JavaScript的jsFiddle,它突出显示了我遇到的问题() 在JSFIDLE中,我在第25行得到一个错误-“函数声明不应该放在块中” 任何帮助都将不胜感激 // JavaScript Document var x = document.getElementB
我刚刚开始尝试JavaScript,如果这是一个简单的问题,我深表歉意。我还提供了JavaScript的jsFiddle,它突出显示了我遇到的问题() 在JSFIDLE中,我在第25行得到一个错误-“函数声明不应该放在块中” 任何帮助都将不胜感激
// JavaScript Document
var x = document.getElementById("info");
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.watchPosition(showPosition, showError, clearWatch, {
enableHighAccuracy: true,
maximumAge: 30000,
timeout: 30000
});
} else {
x.innerHTML = "Your browser does not support the geolocation () API.";
}
}
var flightPathCoordinates = [];
var lat1, lng1, first_check = false;
function showPosition(position) {
if (!first_check) {
lat1 = position.coords.latitude;
lng1 = position.coords.longitude;
first_check = true;
} else {
function distanceFrom(points) {
var lat1 = points.lat1;
var radianLat1 = lat1 * (Math.PI / 180);
var lng1 = points.lng1;
var radianLng1 = lng1 * (Math.PI / 180);
var lat2 = points.lat2;
var radianLat2 = lat2 * (Math.PI / 180);
var lng2 = points.lng2;
var radianLng2 = lng2 * (Math.PI / 180);
var earth_radius = 3959; // or 6371 for kilometers
var diffLat = (radianLat1 - radianLat2);
var diffLng = (radianLng1 - radianLng2);
var sinLat = Math.sin(diffLat / 2);
var sinLng = Math.sin(diffLng / 2);
var a = Math.pow(sinLat, 2.0) + Math.cos(radianLat1) * Math.cos(radianLat2) * Math.pow(sinLng, 2.0);
var distance = earth_radius * 2 * Math.asin(Math.min(1, Math.sqrt(a)));
return distance.toFixed(3);
}
var distance = distanceFrom({
"lat1": lat1,
"lng1": lng1,
"lat2": position.coords.latitude,
"lng2": position.coords.longitude
});
}
x.innerHTML = "Latitude: " + position.coords.latitude +
"<br>Longitude: " + position.coords.longitude +
"<br>Accuracy: " + position.coords.accuracy +
"<br>Altitude: " + position.coords.altitude +
"<br>Altitude Accuracy: " + position.coords.altitudeAccuracy +
"<br>Heading: " + position.coords.heading +
"<br>Speed (km): " + position.coords.speed * 3.6 +
"<br>Timestamp: " + new Date(position.timestamp).toLocaleString() +
"<br>Distance Travelled (km): " + distance +
"<br>Stopwatch: " + min + ":" + sec + ":" + msec;
lat = position.coords.latitude;
lon = position.coords.longitude;
latlon = new google.maps.LatLng(lat, lon);
mapholder = document.getElementById('mapholder');
var myOptions = {
center: latlon,
zoom: 16,
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapTypeControl: true,
navigationControlOptions: {
style: google.maps.NavigationControlStyle.SMALL
}
};
var map = new google.maps.Map(document.getElementById("mapholder"), myOptions);
//Bicycle Store
var request = {
location: (latlon),
radius: '1000',
types: ['bicycle_store']
};
infowindow = new google.maps.InfoWindow();
var service = new google.maps.places.PlacesService(map);
service.nearbySearch(request, callback);
function callback(results, status) {
if (status == google.maps.places.PlacesServiceStatus.OK) {
for (var i = 0; i < results.length; i++) {
var place = results[i];
createMarker(results[i]);
}
}
}
function createMarker(place) {
var placeLoc = place.geometry.location;
//Custom Marker 1
var image1 = '../images/logo_marker1.png';
var marker1 = new google.maps.Marker({
position: place.geometry.location,
map: map,
icon: image1,
title: "Bicycle Store"
});
google.maps.event.addListener(marker1, 'click', function () {
infowindow.setContent(place.name);
infowindow.open(map, this);
});
}
//Bicycle Layer
var bikeLayer = new google.maps.BicyclingLayer();
bikeLayer.setMap(map);
//Custom Marker 2
var image2 = '../images/logo_marker2.png';
var marker2 = new google.maps.Marker({
position: latlon,
map: map,
icon: image2,
title: "You are here!"
});
//Panoramio Layer
var panoramioLayer = new google.maps.panoramio.PanoramioLayer();
panoramioLayer.setUserId("7467601");
panoramioLayer.setMap(map);
google.maps.event.addListener(panoramioLayer, 'click', function (event) {
var attribution = document.createTextNode(event.featureDetails.title + ": " + event.featureDetails.author);
var br = document.createElement("br");
var link = document.createElement("a");
link.setAttribute("href", event.featureDetails.url);
link.appendChild(attribution);
});
//Polyline Layer
flightPathCoordinates.push(new google.maps.LatLng(position.coords.latitude, position.coords.longitude));
var flightPath = new google.maps.Polyline({
path: flightPathCoordinates,
strokeColor: "#FF0000",
strokeOpacity: 1.0,
strokeWeight: 2
});
flightPath.setMap(map);
}
function showError(error) {
switch (error.code) {
case error.PERMISSION_DENIED:
x.innerHTML = "User denied the request for Geolocation.";
break;
case error.POSITION_UNAVAILABLE:
x.innerHTML = "Location information is unavailable.";
break;
case error.TIMEOUT:
x.innerHTML = "The request to get user location timed out.";
break;
case error.UNKNOWN_ERROR:
x.innerHTML = "An unknown error occurred.";
break;
}
}
function clearWatch() {
navigator.geolocation.clearWatch(showPosition);
}
//JavaScript文档
var x=document.getElementById(“信息”);
函数getLocation(){
if(导航器.地理位置){
导航器、地理位置、监视位置(显示位置、淋浴位置、clearWatch、{
EnableHighAccurance:正确,
最高限额:30000,
超时:30000
});
}否则{
x、 innerHTML=“您的浏览器不支持地理位置()API。”;
}
}
var flightPathCoordinates=[];
var lat1,lng1,第一次检查=false;
功能显示位置(位置){
如果(!第一次检查){
lat1=位置坐标纬度;
lng1=位置坐标经度;
第一次检查=正确;
}否则{
函数距离(点){
var lat1=点。lat1;
var radianLat1=lat1*(数学PI/180);
var lng1=点。lng1;
var RadiandLng1=lng1*(数学PI/180);
var lat2=点。lat2;
var radianLat2=lat2*(数学PI/180);
var lng2=点。lng2;
var RadiandLng2=lng2*(数学PI/180);
var earth_radius=3959;//或6371表示公里
var diffLat=(radianLat1-radianLat2);
var diffLng=(radianLng1-radianLng2);
var sinLat=数学sin(diffLat/2);
var sinLng=数学sin(diffLng/2);
var a=数学功率(sinLat,2.0)+数学cos(radianLat1)*数学cos(radianLat2)*数学功率(sinLng,2.0);
var距离=地球半径*2*Math.asin(Math.min(1,Math.sqrt(a));
返回距离。toFixed(3);
}
var距离=距离({
“lat1”:lat1,
“lng1”:lng1,
“lat2”:位置坐标纬度,
“lng2”:位置坐标经度
});
}
x、 innerHTML=“纬度:”+position.coords.Latitude+
经度:“+position.coords.Longitude”+
“
精度:”+position.coords.accurity+
“
高度:”+position.coords.altime+
“
高度精度:”+position.coords.altitudeAccuracy+
“
标题:”+position.coords.Heading+
“
速度(公里):”+position.coords.Speed*3.6+
时间戳:“+新日期(position.Timestamp).toLocaleString()+
“
行驶距离(km):”+距离+
秒表:“+min+”:“+sec+”:“+msec;
纬度=位置坐标纬度;
lon=位置坐标经度;
latlon=新的google.maps.LatLng(lat,lon);
mapholder=document.getElementById('mapholder');
变量myOptions={
中心:拉特伦,
缩放:16,
mapTypeId:google.maps.mapTypeId.ROADMAP,
mapTypeControl:true,
导航控制选项:{
样式:google.maps.NavigationControlStyle.SMALL
}
};
var map=new google.maps.map(document.getElementById(“mapholder”),myOptions);
//自行车店
var请求={
地点:(拉特隆),
半径:“1000”,
类型:[“自行车商店”]
};
infowindow=new google.maps.infowindow();
var service=newgoogle.maps.places.PlacesService(地图);
服务.nearbySearch(请求、回调);
函数回调(结果、状态){
if(status==google.maps.places.PlacesServiceStatus.OK){
对于(var i=0;i