159 lines
4.3 KiB
JavaScript
159 lines
4.3 KiB
JavaScript
GMaps.prototype.getFromFusionTables = function(options) {
|
|
var events = options.events;
|
|
|
|
delete options.events;
|
|
|
|
var fusion_tables_options = options,
|
|
layer = new google.maps.FusionTablesLayer(fusion_tables_options);
|
|
|
|
for (var ev in events) {
|
|
(function(object, name) {
|
|
google.maps.event.addListener(object, name, function(e) {
|
|
events[name].apply(this, [e]);
|
|
});
|
|
})(layer, ev);
|
|
}
|
|
|
|
this.layers.push(layer);
|
|
|
|
return layer;
|
|
};
|
|
|
|
GMaps.prototype.loadFromFusionTables = function(options) {
|
|
var layer = this.getFromFusionTables(options);
|
|
layer.setMap(this.map);
|
|
|
|
return layer;
|
|
};
|
|
|
|
GMaps.prototype.getFromKML = function(options) {
|
|
var url = options.url,
|
|
events = options.events;
|
|
|
|
delete options.url;
|
|
delete options.events;
|
|
|
|
var kml_options = options,
|
|
layer = new google.maps.KmlLayer(url, kml_options);
|
|
|
|
for (var ev in events) {
|
|
(function(object, name) {
|
|
google.maps.event.addListener(object, name, function(e) {
|
|
events[name].apply(this, [e]);
|
|
});
|
|
})(layer, ev);
|
|
}
|
|
|
|
this.layers.push(layer);
|
|
|
|
return layer;
|
|
};
|
|
|
|
GMaps.prototype.loadFromKML = function(options) {
|
|
var layer = this.getFromKML(options);
|
|
layer.setMap(this.map);
|
|
|
|
return layer;
|
|
};
|
|
|
|
GMaps.prototype.addLayer = function(layerName, options) {
|
|
//var default_layers = ['weather', 'clouds', 'traffic', 'transit', 'bicycling', 'panoramio', 'places'];
|
|
options = options || {};
|
|
var layer;
|
|
|
|
switch(layerName) {
|
|
case 'weather': this.singleLayers.weather = layer = new google.maps.weather.WeatherLayer();
|
|
break;
|
|
case 'clouds': this.singleLayers.clouds = layer = new google.maps.weather.CloudLayer();
|
|
break;
|
|
case 'traffic': this.singleLayers.traffic = layer = new google.maps.TrafficLayer();
|
|
break;
|
|
case 'transit': this.singleLayers.transit = layer = new google.maps.TransitLayer();
|
|
break;
|
|
case 'bicycling': this.singleLayers.bicycling = layer = new google.maps.BicyclingLayer();
|
|
break;
|
|
case 'panoramio':
|
|
this.singleLayers.panoramio = layer = new google.maps.panoramio.PanoramioLayer();
|
|
layer.setTag(options.filter);
|
|
delete options.filter;
|
|
|
|
//click event
|
|
if (options.click) {
|
|
google.maps.event.addListener(layer, 'click', function(event) {
|
|
options.click(event);
|
|
delete options.click;
|
|
});
|
|
}
|
|
break;
|
|
case 'places':
|
|
this.singleLayers.places = layer = new google.maps.places.PlacesService(this.map);
|
|
|
|
//search, nearbySearch, radarSearch callback, Both are the same
|
|
if (options.search || options.nearbySearch || options.radarSearch) {
|
|
var placeSearchRequest = {
|
|
bounds : options.bounds || null,
|
|
keyword : options.keyword || null,
|
|
location : options.location || null,
|
|
name : options.name || null,
|
|
radius : options.radius || null,
|
|
rankBy : options.rankBy || null,
|
|
types : options.types || null
|
|
};
|
|
|
|
if (options.radarSearch) {
|
|
layer.radarSearch(placeSearchRequest, options.radarSearch);
|
|
}
|
|
|
|
if (options.search) {
|
|
layer.search(placeSearchRequest, options.search);
|
|
}
|
|
|
|
if (options.nearbySearch) {
|
|
layer.nearbySearch(placeSearchRequest, options.nearbySearch);
|
|
}
|
|
}
|
|
|
|
//textSearch callback
|
|
if (options.textSearch) {
|
|
var textSearchRequest = {
|
|
bounds : options.bounds || null,
|
|
location : options.location || null,
|
|
query : options.query || null,
|
|
radius : options.radius || null
|
|
};
|
|
|
|
layer.textSearch(textSearchRequest, options.textSearch);
|
|
}
|
|
break;
|
|
}
|
|
|
|
if (layer !== undefined) {
|
|
if (typeof layer.setOptions == 'function') {
|
|
layer.setOptions(options);
|
|
}
|
|
if (typeof layer.setMap == 'function') {
|
|
layer.setMap(this.map);
|
|
}
|
|
|
|
return layer;
|
|
}
|
|
};
|
|
|
|
GMaps.prototype.removeLayer = function(layer) {
|
|
if (typeof(layer) == "string" && this.singleLayers[layer] !== undefined) {
|
|
this.singleLayers[layer].setMap(null);
|
|
|
|
delete this.singleLayers[layer];
|
|
}
|
|
else {
|
|
for (var i = 0; i < this.layers.length; i++) {
|
|
if (this.layers[i] === layer) {
|
|
this.layers[i].setMap(null);
|
|
this.layers.splice(i, 1);
|
|
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
};
|