Advertisement
Guest User

Marker Cluster Revision

a guest
Apr 17th, 2013
383
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*!
  2.  * IP Address geocoding API for Google Maps
  3.  * http://lab.abhinayrathore.com/ipmapper/
  4.  * Last Updated: June 13, 2012
  5.  */
  6. var IPMapper = {
  7.     map: null,
  8.     mapTypeId: google.maps.MapTypeId.ROADMAP,
  9.     latlngbound: null,
  10.     infowindow: null,
  11.     baseUrl: "http://freegeoip.net/json/",
  12.     initializeMap: function(mapId){
  13.         IPMapper.latlngbound = new google.maps.LatLngBounds();
  14.         var latlng = new google.maps.LatLng(0, 0);
  15.         //set Map options
  16.         var mapOptions = {
  17.             zoom: 1,
  18.             center: latlng,
  19.             mapTypeId: IPMapper.mapTypeId
  20.         }
  21.         //init Map
  22.         IPMapper.map = new google.maps.Map(document.getElementById(mapId), mapOptions);
  23.         //init info window
  24.         IPMapper.infowindow = new google.maps.InfoWindow();
  25.         //info window close event
  26.         google.maps.event.addListener(IPMapper.infowindow, 'closeclick', function() {
  27.             IPMapper.map.fitBounds(IPMapper.latlngbound);
  28.             IPMapper.map.panToBounds(IPMapper.latlngbound);
  29.         });
  30.     },
  31.     addIPArray: function(ipArray){
  32.         ipArray = IPMapper.uniqueArray(ipArray); //get unique array elements
  33.         //add Map Marker for each IP
  34.     var markerArray = [];
  35.         for (var i = 0; i < ipArray.length; i++){
  36.             IPMapper.addIPMarker(ipArray[i]);
  37.         }
  38.     var markerCluster = new MarkerClusterer(IPMapper.map, markerArray);
  39.     },
  40.     addIPMarker: function(ip){
  41.         ipRegex = /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/;
  42.         if($.trim(ip) != '' && ipRegex.test(ip)){ //validate IP Address format
  43.             var url = encodeURI(IPMapper.baseUrl + ip + "?callback=?"); //geocoding url
  44.             $.getJSON(url, function(data) { //get Geocoded JSONP data
  45.                 if($.trim(data.latitude) != '' && data.latitude != '0' && !isNaN(data.latitude)){ //Geocoding successfull
  46.                     var latitude = data.latitude;
  47.                     var longitude = data.longitude;
  48.                     var contentString = "";
  49.                     $.each(data, function(key, val) {
  50.                         contentString += '<b>' + key.toUpperCase().replace("_", " ") + ':</b> ' + val + '<br />';
  51.                     });
  52.                     var latlng = new google.maps.LatLng(latitude, longitude);
  53.                     var marker = new google.maps.Marker({ //create Map Marker
  54.                         map: IPMapper.map,
  55.                         draggable: false,
  56.                         position: latlng
  57.                     });
  58.                     markerArray.push(marker); //place Marker on Map
  59.                    
  60.                 } else {
  61.                     IPMapper.logError('IP Address geocoding failed!');
  62.                     $.error('IP Address geocoding failed!');
  63.                 }
  64.             });
  65.         } else {
  66.             IPMapper.logError('Invalid IP Address!');
  67.             $.error('Invalid IP Address!');
  68.         }
  69.     },
  70.     placeIPMarker: function(marker, latlng, contentString){ //place Marker on Map
  71.         marker.setPosition(latlng);
  72.         google.maps.event.addListener(marker, 'click', function() {
  73.             IPMapper.getIPInfoWindowEvent(marker, contentString);
  74.         });
  75.         IPMapper.latlngbound.extend(latlng);
  76.         IPMapper.map.setCenter(IPMapper.latlngbound.getCenter());
  77.         IPMapper.map.fitBounds(IPMapper.latlngbound);
  78.     },
  79.     getIPInfoWindowEvent: function(marker, contentString){ //open Marker Info Window
  80.         IPMapper.infowindow.close()
  81.         IPMapper.infowindow.setContent(contentString);
  82.         IPMapper.infowindow.open(IPMapper.map, marker);
  83.     },
  84.     uniqueArray: function(inputArray){ //return unique elements from Array
  85.         var a = [];
  86.         for(var i=0; i<inputArray.length; i++) {
  87.             for(var j=i+1; j<inputArray.length; j++) {
  88.                 if (inputArray[i] === inputArray[j]) j = ++i;
  89.             }
  90.             a.push(inputArray[i]);
  91.         }
  92.         return a;
  93.     },
  94.     logError: function(error){
  95.         if (typeof console == 'object') { console.error(error); }
  96.     }
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement