Take the 2-minute tour ×
Code Review Stack Exchange is a question and answer site for peer programmer code reviews. It's 100% free, no registration required.

I want you to review my JavaScript project.

var geocoder;
var map;
var infowindow = new google.maps.InfoWindow();
var marker;

function initialize() {
    document.upload.lat.value = geoip_latitude();
    document.upload.lng.value = geoip_longitude();
    geocoder = new google.maps.Geocoder();
    var latlng = new google.maps.LatLng(geoip_latitude(), geoip_longitude());
    var myOptions = {
            zoom: 8,
            center: latlng,
            mapTypeId: 'roadmap'
        }
        map = new google.maps.Map(document.getElementById("gmap"), myOptions);
    //var ctaLayer = new google.maps.KmlLayer('http://www.koolbusiness.com/list.kml');
    //ctaLayer.setMap(map);
    google.maps.event.addListener(map, "click", gAdd);

    geocoder.geocode({
        'latLng': latlng
    }, function (results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            document.getElementById("message").innerHTML = results[5].formatted_address;
            document.upload.place.value = results[5].formatted_address;
        } else {

        }
    });

    if (navigator.geolocation) {

        browserSupportFlag = true;
        navigator.geolocation.getCurrentPosition(function (position) {
            initialLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);

            var latlng = initialLocation
                geocoder.geocode({
                    'latLng': latlng
                }, function (results, status) {
                    if (status == google.maps.GeocoderStatus.OK) {
                        if (results[1]) {
                            marker = new google.maps.Marker({
                                position: latlng,
                                map: map
                            });
                            infowindow.setContent('<a href="/li?lat=' + latlng.lat() + '&lon=' + latlng.lng() + '">' + results[1].formatted_address + '</a>');
                            infowindow.open(map, marker);
                            document.upload.lat.value = latlng.lat();
                            document.upload.lng.value = latlng.lng();
                            document.upload.place.value = results[5].formatted_address

                        } else {
                            alert("No results found");
                        }
                    } else {
                        alert("Geocoder failed due to: " + status);
                    }
                });

        }, function () {
            handleNoGeolocation(browserSupportFlag);
        });
    } else if (google.gears) {
        // Try Google Gears Geolocation
        browserSupportFlag = true;
        var geo = google.gears.factory.create('beta.geolocation');
        geo.getCurrentPosition(function (position) {
            initialLocation = new google.maps.LatLng(position.latitude, position.longitude);
            var latlng = initialLocation
                geocoder.geocode({
                    'latLng': latlng
                }, function (results, status) {
                    if (status == google.maps.GeocoderStatus.OK) {
                        if (results[1]) {
                            marker = new google.maps.Marker({
                                position: latlng,
                                map: map
                            });
                            infowindow.setContent('<a href="/li?lat=' + latlng.lat() + '&lon=' + latlng.lng() + '">' + results[1].formatted_address + '</a>');
                            infowindow.open(map, marker);
                            document.upload.lat.value = latlng.lat();
                            document.upload.lng.value = latlng.lng();;
                            document.upload.place.value = results[5].formatted_address;

                        } else {
                            alert("No results found");
                        }
                    } else {
                        alert("Geocoder failed due to: " + status);
                    }
                });

        }, function () {
            handleNoGeolocation(browserSupportFlag);
        });
    } else {
        // Browser doesn't support Geolocation
        browserSupportFlag = false;
        handleNoGeolocation(browserSupportFlag);
    }

}

function gAdd(ev) {
    marker.setMap(null)
    var latlng = new google.maps.LatLng(ev.latLng.lat(), ev.latLng.lng());

    geocoder.geocode({
        'latLng': latlng
    }, function (results, status) {

        if (status == google.maps.GeocoderStatus.OK) {
            document.getElementById("message").innerHTML = results[1].formatted_address;
            document.upload.place.value = results[5].formatted_address
            document.upload.lat.value = latlng.lat();
            document.upload.lng.value = latlng.lng();
            marker = new google.maps.Marker({
                position: latlng,
                draggable: true,
                animation: google.maps.Animation.DROP,
                map: map
            });
            google.maps.event.addListener(marker, 'click', toggleBounce);
            infowindow.setContent('<a href="/li?lat=' + latlng.lat() + '&lon=' + latlng.lng() + '">' + results[1].formatted_address + '</a>');
            infowindow.open(map, marker);

        } else {

        }
    });

}

function toggleBounce() {
    if (marker.getAnimation() != null) {
        alert("test");
        marker.setAnimation(null);

    } else {
        marker.setAnimation(google.maps.Animation.BOUNCE);

    }
}

enter image description here

share|improve this question
3  
Add comments, name your functions, make the code less ugly. –  Raynos Nov 20 '11 at 0:18

1 Answer 1

up vote 4 down vote accepted

Comments:

  • I highly suggest that you document your functions better. At the beginning of each function, document:
    1. The overall purpose of the function
    2. The parameters it takes and their types
    3. What is returned.
  • Document each major block of code.
    1. Describe the overall procedure for the code piece.
    2. Document variables that will are already in use that are needed in your code. (I only do this sometimes, it's not as helpful as the rest, but sometimes it's nice)
  • Use semicolons for every code statement. At least twice when you declared your variables you didn't use a semicolon at the end.
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.