2
\$\begingroup\$

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

\$\endgroup\$
  • 3
    \$\begingroup\$ Add comments, name your functions, make the code less ugly. \$\endgroup\$ – Raynos Nov 20 '11 at 0:18
4
\$\begingroup\$

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.
\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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