﻿var mapitems = [];
var map;
var geocoder;
var markersArray = [];
var bounds;

function showMapItems(mapitems) {
    markersArray.splice(0, markersArray.length);

    geocoder = new google.maps.Geocoder();

    var eerstteLatlng;
    var iDichtstbijzijndIndex = 0;    
    var myOptions = { zoom: 11, mapTypeId: google.maps.MapTypeId.ROADMAP };
    map = new google.maps.Map(document.getElementById("map"), myOptions);

    bounds = new google.maps.LatLngBounds();

    for (var i = 0; i < mapitems.length; i++) {
        var mapitem = mapitems[i];
        showAddress(mapitem);

        if (mapitem.dichtstbijzijnd == 1) {
            iDichtstbijzijndIndex = i;
        }        
    }

    google.maps.event.addListenerOnce(map, 'idle', function () {
        this.setCenter(markersArray[iDichtstbijzijndIndex].position);
    });
}

function showAddress(mapitem) {
    if ((mapitem.lengtegraad != 0) && (mapitem.breedtegraad != 0)) {
        var latLng = new google.maps.LatLng(mapitem.breedtegraad, mapitem.lengtegraad);
        var marker = new google.maps.Marker({
            map: map,
            icon: "/images/MapIcons/" + mapitem.icon,
            position: latLng
        });
        markersArray.push(marker);
    }
    else {
        var address = mapitem.adres + ", " + mapitem.woonplaats + "," + mapitem.land;

        geocoder.geocode({ 'address': address }, function (results, status) {
            if (status == google.maps.GeocoderStatus.OK) {

                var marker = new google.maps.Marker({
                    map: map,
                    icon: "/images/MapIcons/" + mapitem.icon,
                    position: results[0].geometry.location
                });

                markersArray.push(marker);

            } else {
                alert("Geocode was not successful for the following reason: " + status);
            }
        });
    }
}

function MapItem(icon, adres, woonplaats, land, dichtstbijzijnd, lengtegraad, breedtegraad, info) {
    this.icon = icon;
    this.adres = adres;
    this.woonplaats = woonplaats;
    this.land = land;
    this.dichtstbijzijnd = dichtstbijzijnd;    
    this.lengtegraad = lengtegraad;
    this.breedtegraad = breedtegraad
    this.info = info;
}
