Javascript 函数声明不应放在块中

Javascript 函数声明不应放在块中,javascript,google-maps,geolocation,Javascript,Google Maps,Geolocation,我的JavaScript(如下)非常不整洁,包含一个我无法解决的错误。错误在showPosition函数中(我在函数中有一个函数,这是不推荐的)。 我刚刚开始尝试JavaScript,如果这是一个简单的问题,我深表歉意。我还提供了JavaScript的jsFiddle,它突出显示了我遇到的问题() 在JSFIDLE中,我在第25行得到一个错误-“函数声明不应该放在块中” 任何帮助都将不胜感激 // JavaScript Document var x = document.getElementB

我的JavaScript(如下)非常不整洁,包含一个我无法解决的错误。错误在showPosition函数中(我在函数中有一个函数,这是不推荐的)。
我刚刚开始尝试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