Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*!
- * IP Address geocoding API for Google Maps
- * http://lab.abhinayrathore.com/ipmapper/
- * Last Updated: June 13, 2012
- */
- var IPMapper = {
- map: null,
- mapTypeId: google.maps.MapTypeId.ROADMAP,
- latlngbound: null,
- infowindow: null,
- baseUrl: "http://freegeoip.net/json/",
- initializeMap: function(mapId){
- IPMapper.latlngbound = new google.maps.LatLngBounds();
- var latlng = new google.maps.LatLng(0, 0);
- //set Map options
- var mapOptions = {
- zoom: 1,
- center: latlng,
- mapTypeId: IPMapper.mapTypeId
- }
- //init Map
- IPMapper.map = new google.maps.Map(document.getElementById(mapId), mapOptions);
- //init info window
- IPMapper.infowindow = new google.maps.InfoWindow();
- //info window close event
- google.maps.event.addListener(IPMapper.infowindow, 'closeclick', function() {
- IPMapper.map.fitBounds(IPMapper.latlngbound);
- IPMapper.map.panToBounds(IPMapper.latlngbound);
- });
- },
- addIPArray: function(ipArray){
- ipArray = IPMapper.uniqueArray(ipArray); //get unique array elements
- //add Map Marker for each IP
- var markerArray = [];
- for (var i = 0; i < ipArray.length; i++){
- IPMapper.addIPMarker(ipArray[i]);
- }
- var markerCluster = new MarkerClusterer(IPMapper.map, markerArray);
- },
- addIPMarker: function(ip){
- 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])$/;
- if($.trim(ip) != '' && ipRegex.test(ip)){ //validate IP Address format
- var url = encodeURI(IPMapper.baseUrl + ip + "?callback=?"); //geocoding url
- $.getJSON(url, function(data) { //get Geocoded JSONP data
- if($.trim(data.latitude) != '' && data.latitude != '0' && !isNaN(data.latitude)){ //Geocoding successfull
- var latitude = data.latitude;
- var longitude = data.longitude;
- var contentString = "";
- $.each(data, function(key, val) {
- contentString += '<b>' + key.toUpperCase().replace("_", " ") + ':</b> ' + val + '<br />';
- });
- var latlng = new google.maps.LatLng(latitude, longitude);
- var marker = new google.maps.Marker({ //create Map Marker
- map: IPMapper.map,
- draggable: false,
- position: latlng
- });
- markerArray.push(marker); //place Marker on Map
- } else {
- IPMapper.logError('IP Address geocoding failed!');
- $.error('IP Address geocoding failed!');
- }
- });
- } else {
- IPMapper.logError('Invalid IP Address!');
- $.error('Invalid IP Address!');
- }
- },
- placeIPMarker: function(marker, latlng, contentString){ //place Marker on Map
- marker.setPosition(latlng);
- google.maps.event.addListener(marker, 'click', function() {
- IPMapper.getIPInfoWindowEvent(marker, contentString);
- });
- IPMapper.latlngbound.extend(latlng);
- IPMapper.map.setCenter(IPMapper.latlngbound.getCenter());
- IPMapper.map.fitBounds(IPMapper.latlngbound);
- },
- getIPInfoWindowEvent: function(marker, contentString){ //open Marker Info Window
- IPMapper.infowindow.close()
- IPMapper.infowindow.setContent(contentString);
- IPMapper.infowindow.open(IPMapper.map, marker);
- },
- uniqueArray: function(inputArray){ //return unique elements from Array
- var a = [];
- for(var i=0; i<inputArray.length; i++) {
- for(var j=i+1; j<inputArray.length; j++) {
- if (inputArray[i] === inputArray[j]) j = ++i;
- }
- a.push(inputArray[i]);
- }
- return a;
- },
- logError: function(error){
- if (typeof console == 'object') { console.error(error); }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement