google map API V3: how to add road names? [closed] - api
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 4 years ago.
Improve this question
I'm new to google map.
I'm developing an application about showing cars on google map but google map has not the names(label) of most of roads in over area. I want to develop an system to allow the user to add these names on the map. positions and names will keep on database. My question is that how to add road name on the map with javascript. I can send the names and positions to a function in javascript code but I need an API to add these names on map temporary till user close the application.
You see that with increase/decrease in zoom level, road names becomes bigger or smaller or disapear. With regular marker we can not do this.
One option is to use the InfoBox
One example of that here
You can write code to change the size of the font and/or not to display the InfoBoxes depending on the zoom level (the example above only displays the infoboxes when you are zoomed in enough for it to be reasonable).
code snippet:
var geocoder = null;
var layer = null;
var map = null;
var labels = [];
var infowindow = null;
var address = "4200 East Palm Canyon Dr, Palm Springs CA";
function initialize() {
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(33.796, -116.5);
var myOptions = {
zoom: 18,
center: latlng,
mapTypeControl: true,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
},
navigationControl: true,
mapTypeId: google.maps.MapTypeId.HYBRID
};
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
layer = new google.maps.KmlLayer("http://www.geocodezip.com/ParkerPalmSprings.xml", {
preserveViewport: true,
suppressInfoWindows: true
});
layer.setMap(map);
google.maps.event.addListener(layer, "click", openIW);
var i = 0;
labels.push(new InfoBox({
content: "Gene Autry Residence",
boxStyle: {
border: "1px solid black",
textAlign: "center",
fontSize: "8pt",
width: "50px"
},
disableAutoPan: true,
pixelOffset: new google.maps.Size(-25, 0),
position: new google.maps.LatLng(33.7967, -116.500632),
closeBoxURL: "",
isHidden: false,
enableEventPropagation: true,
pane: "mapPane"
}));
labels[i++].open(map);
labels.push(new InfoBox({
content: "North Building",
boxStyle: {
border: "1px solid black",
textAlign: "center",
fontSize: "8pt",
width: "50px"
},
disableAutoPan: true,
pixelOffset: new google.maps.Size(-25, 0),
position: new google.maps.LatLng(33.7965, -116.4997),
closeBoxURL: "",
isHidden: false,
enableEventPropagation: true,
pane: "mapPane"
}));
labels[i++].open(map);
labels.push(new InfoBox({
content: "South Building",
boxStyle: {
border: "1px solid black",
textAlign: "center",
fontSize: "8pt",
width: "40px"
},
disableAutoPan: true,
pixelOffset: new google.maps.Size(-20, 0),
position: new google.maps.LatLng(33.7954, -116.4998),
closeBoxURL: "",
isHidden: false,
enableEventPropagation: true,
pane: "mapPane"
}));
labels[i++].open(map);
labels.push(new InfoBox({
/* content: "<div style='fontSize: 8pt;width: 15px;writing-mode: tb-rl;'> East Parking Lot </div>"*/
content: "East Parking Lot",
boxStyle: {
border: "1px solid black",
textAlign: "center",
fontSize: "8pt",
width: "40px"
},
disableAutoPan: true,
pixelOffset: new google.maps.Size(-20, 0),
position: new google.maps.LatLng(33.7958, -116.4996),
closeBoxURL: "",
isHidden: false,
enableEventPropagation: true,
pane: "mapPane"
}));
labels[i++].open(map);
labels.push(new InfoBox({
content: "Lobby",
boxStyle: {
border: "1px solid black",
textAlign: "center",
fontSize: "8pt",
width: "30px"
},
disableAutoPan: true,
pixelOffset: new google.maps.Size(-15, 0),
position: new google.maps.LatLng(33.79525, -116.50017),
closeBoxURL: "",
isHidden: false,
enableEventPropagation: true,
pane: "mapPane"
}));
labels[i++].open(map);
labels.push(new InfoBox({
content: "Mr Parkers",
boxStyle: {
border: "1px solid black",
textAlign: "center",
fontSize: "8pt",
width: "40px"
},
disableAutoPan: true,
pixelOffset: new google.maps.Size(-20, 0),
position: new google.maps.LatLng(33.79543, -116.50045),
closeBoxURL: "",
isHidden: false,
enableEventPropagation: true,
pane: "mapPane"
}));
labels[i++].open(map);
labels.push(new InfoBox({
content: "Ballroom",
boxStyle: {
border: "1px solid black",
textAlign: "center",
fontSize: "8pt",
width: "50px"
},
disableAutoPan: true,
pixelOffset: new google.maps.Size(-25, 0),
position: new google.maps.LatLng(33.79597, -116.50095),
closeBoxURL: "",
isHidden: false,
enableEventPropagation: true,
pane: "mapPane"
}));
labels[i++].open(map);
labels.push(new InfoBox({
content: "PSYC",
boxStyle: {
border: "1px solid black",
textAlign: "center",
fontSize: "8pt",
width: "50px"
},
disableAutoPan: true,
pixelOffset: new google.maps.Size(-25, 0),
position: new google.maps.LatLng(33.7957, -116.50088),
closeBoxURL: "",
isHidden: false,
enableEventPropagation: true,
pane: "mapPane"
}));
labels[i++].open(map);
labels.push(new InfoBox({
content: "Autry Lawn",
boxStyle: {
border: "1px solid black",
textAlign: "center",
fontSize: "8pt",
width: "50px"
},
disableAutoPan: true,
pixelOffset: new google.maps.Size(-25, 0),
position: new google.maps.LatLng(33.797, -116.50075),
closeBoxURL: "",
isHidden: false,
enableEventPropagation: true,
pane: "mapPane"
}));
labels[i++].open(map);
labels.push(new InfoBox({
content: "North Parking Lot",
boxStyle: {
border: "1px solid black",
textAlign: "center",
fontSize: "8pt",
width: "150px"
},
disableAutoPan: true,
pixelOffset: new google.maps.Size(-75, 0),
position: new google.maps.LatLng(33.7971, -116.500),
closeBoxURL: "",
isHidden: false,
enableEventPropagation: true,
pane: "mapPane"
}));
labels[i++].open(map);
labels.push(new InfoBox({
content: "Tennis Courts",
boxStyle: {
border: "1px solid black",
textAlign: "center",
fontSize: "8pt",
width: "50px"
},
disableAutoPan: true,
pixelOffset: new google.maps.Size(-25, 0),
position: new google.maps.LatLng(33.7971, -116.50115),
closeBoxURL: "",
isHidden: false,
enableEventPropagation: true,
pane: "mapPane"
}));
labels[i++].open(map);
labels.push(new InfoBox({
content: "Petanque Courts",
boxStyle: {
border: "1px solid black",
textAlign: "center",
fontSize: "8pt",
width: "50px"
},
disableAutoPan: true,
pixelOffset: new google.maps.Size(-25, 0),
position: new google.maps.LatLng(33.7963, -116.50075),
closeBoxURL: "",
isHidden: false,
enableEventPropagation: true,
pane: "mapPane"
}));
labels[i++].open(map);
labels.push(new InfoBox({
content: "Palm Court",
boxStyle: {
border: "1px solid black",
textAlign: "center",
fontSize: "8pt",
width: "50px"
},
disableAutoPan: true,
pixelOffset: new google.maps.Size(-25, 0),
position: new google.maps.LatLng(33.79597, -116.50045),
closeBoxURL: "",
isHidden: false,
enableEventPropagation: true,
pane: "mapPane"
}));
labels[i++].open(map);
labels.push(new InfoBox({
content: "Autry Pool",
boxStyle: {
border: "1px solid black",
textAlign: "center",
fontSize: "7pt",
width: "35px"
},
disableAutoPan: true,
pixelOffset: new google.maps.Size(-17, 0),
position: new google.maps.LatLng(33.79625, -116.50106),
closeBoxURL: "",
isHidden: false,
enableEventPropagation: true,
pane: "mapPane"
}));
labels[i++].open(map);
labels.push(new InfoBox({
content: "Picnic Area",
boxStyle: {
border: "1px solid black",
textAlign: "center",
fontSize: "8pt",
width: "30px"
},
disableAutoPan: true,
pixelOffset: new google.maps.Size(-15, 0),
position: new google.maps.LatLng(33.796345, -116.50123),
closeBoxURL: "",
isHidden: false,
enableEventPropagation: true,
pane: "mapPane"
}));
labels[i++].open(map);
labels.push(new InfoBox({
content: "<div style='fontSize: 8pt;width: 15px;writing-mode: tb-rl;'> Backyard </div>",
boxStyle: {
border: "1px solid black",
textAlign: "center",
fontSize: "8pt",
width: "10px"
},
disableAutoPan: true,
pixelOffset: new google.maps.Size(0, 0),
position: new google.maps.LatLng(33.7965, -116.5014),
closeBoxURL: "",
isHidden: false,
enableEventPropagation: true,
pane: "mapPane"
}));
labels[i++].open(map);
labels.push(new InfoBox({
content: "Croquet Lawn",
boxStyle: {
border: "1px solid black",
textAlign: "center",
fontSize: "8pt",
width: "50px"
},
disableAutoPan: true,
pixelOffset: new google.maps.Size(-25, 0),
position: new google.maps.LatLng(33.79595, -116.4999),
closeBoxURL: "",
isHidden: false,
enableEventPropagation: true,
pane: "mapPane"
}));
labels[i++].open(map);
labels.push(new InfoBox({
content: "Firepit",
boxStyle: {
border: "1px solid black",
textAlign: "center",
fontSize: "8pt",
width: "30px"
},
disableAutoPan: true,
pixelOffset: new google.maps.Size(-15, 0),
position: new google.maps.LatLng(33.79591, -116.50019),
closeBoxURL: "",
isHidden: false,
enableEventPropagation: true,
pane: "mapPane"
}));
labels[i++].open(map);
labels.push(new InfoBox({
content: "Villa" /* (James, Noah, Max, Zoe) */ ,
boxStyle: {
border: "1px solid black",
textAlign: "center",
fontSize: "8pt",
width: "30px"
},
disableAutoPan: true,
pixelOffset: new google.maps.Size(-15, 0),
position: new google.maps.LatLng(33.79619, -116.50051),
closeBoxURL: "",
isHidden: false,
enableEventPropagation: true,
pane: "mapPane"
}));
labels[i++].open(map);
labels.push(new InfoBox({
content: "Villa" /* (Jake, Lola, Ian, Remi) */ ,
boxStyle: {
border: "1px solid black",
textAlign: "center",
fontSize: "8pt",
width: "30px"
},
disableAutoPan: true,
pixelOffset: new google.maps.Size(-15, 0),
position: new google.maps.LatLng(33.79619, -116.50016),
closeBoxURL: "",
isHidden: false,
enableEventPropagation: true,
pane: "mapPane"
}));
labels[i++].open(map);
labels.push(new InfoBox({
content: "Villa" /* (Ben, Julia, Joey, Jayda) */ ,
boxStyle: {
border: "1px solid black",
textAlign: "center",
fontSize: "8pt",
width: "30px"
},
disableAutoPan: true,
pixelOffset: new google.maps.Size(-15, 0),
position: new google.maps.LatLng(33.7965, -116.50033),
closeBoxURL: "",
isHidden: false,
enableEventPropagation: true,
pane: "mapPane"
}));
labels[i++].open(map);
labels.push(new InfoBox({
content: "North Pool",
boxStyle: {
border: "1px solid black",
textAlign: "center",
fontSize: "7pt",
width: "50px"
},
disableAutoPan: true,
pixelOffset: new google.maps.Size(-25, 0),
position: new google.maps.LatLng(33.796455, -116.50002),
closeBoxURL: "",
isHidden: false,
enableEventPropagation: true,
pane: "mapPane"
}));
labels[i++].open(map);
labels.push(new InfoBox({
content: "Great Lawn",
boxStyle: {
border: "1px solid black",
textAlign: "center",
fontSize: "8pt",
width: "50px"
},
disableAutoPan: true,
pixelOffset: new google.maps.Size(-25, 0),
position: new google.maps.LatLng(33.7975, -116.50115),
closeBoxURL: "",
isHidden: false,
enableEventPropagation: true,
pane: "mapPane"
}));
labels[i++].open(map);
function showLabels() {
for (var i = 0; i < labels.length; i++) {
labels[i].setMap(map);
}
}
function hideLabels() {
for (var i = 0; i < labels.length; i++) {
labels[i].setMap(null);
}
}
var ParkerPalmSprings = new google.maps.LatLng(33.795451, -116.500116);
var marker = createMarker(ParkerPalmSprings,
"Parker Palm Springs",
'<b>Parker Palm Springs</b><br>4200 East Palm Canyon Dr<br>Palm Springs CA<br>');
google.maps.event.trigger(marker, 'click');
var MercedesBenzOfPalmSprings = new google.maps.LatLng(33.794431, -116.501985);
var MBmarker = createMarker(MercedesBenzOfPalmSprings,
"Mercedes-Benz of Palm Springs",
'<b>Mercedes-Benz of Palm Springs</b><br>4095 East Palm Canyon Drive<br>Palm Springs CA<br>');
google.maps.event.addListener(map, "zoom_changed", function() {
if (map.getZoom() >= 18) {
showLabels();
} else {
hideLabels();
}
});
google.maps.event.addListener(map, "click", function() {
infowindow.close();
});
}
var infowindow = new google.maps.InfoWindow({
size: new google.maps.Size(150, 100)
});
function openIW(KMLevent) {
infowindow.close();
infowindow.setOptions({
content: '<div style="height:100;width:250">' + KMLevent.featureData.infoWindowHtml + '</div>',
position: KMLevent.latLng,
pixelOffset: KMLevent.pixelOffset
});
infowindow.open(map);
}
function createMarker(latlng, title, html) {
var contentString = html;
var marker = new google.maps.Marker({
position: latlng,
map: map,
title: title,
zIndex: Math.round(latlng.lat() * -100000) << 5
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.close();
infowindow.setContent(contentString);
infowindow.open(map, marker);
});
return marker;
}
google.maps.event.addDomListener(window, 'load', initialize);
html,
body,
#map_canvas {
height: 100%;
width: 100%;
margin: 0;
padding: 0;
}
<script src="https://maps.google.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk"></script>
<script src="https://cdn.jsdelivr.net/gh/geocodezip/v3-utility-library#master/archive/infobox/src/infobox.js"></script>
<div id="map_canvas"></div>
Related
Draw vertical thresholds with chartjs-plugin-annotation and vue-chartjs
I try to position 2 vertical lines which are my thresholds for list of results for some tests. My problem is that when I try to take value which is not part of the results, The lines are not shown. With the following code I see the lines. <script> import BarChart from "#/components/TestsStatictics/BarChart.vue"; export default { components: { BarChart, }, data() { return { chartData: { labels: [24.35, 24, 24.2, 24.28], datasets: [ { label: "Bar Chart", backgroundColor: [ "rgba(255, 99, 132, 0.2)", "rgba(54, 162, 235, 0.2)", "rgba(255, 206, 86, 0.2)", "rgba(75, 192, 192, 0.2)", "rgba(75, 192, 192, 0.2)", ], borderColor: [ "rgba(255,99,132,1)", "rgba(54, 162, 235, 1)", "rgba(255, 206, 86, 1)", "rgba(75, 192, 192, 1)", "rgba(75, 192, 192, 0.2)", ], pointBorderColor: "#2554FF", data: [24.35, 24, 24.2, 24.28], }, ], }, options: { annotation: { annotations: [ { type: "line", mode: "vertical", scaleID: "x-axis-0", value: 24.35, borderColor: "green", borderWidth: 1, label: { enabled: true, position: "center", content: "22.70", }, }, { type: "line", mode: "vertical", scaleID: "x-axis-0", value: 24.28, borderColor: "green", borderWidth: 1, label: { enabled: true, position: "center", content: "25.70", }, }, ], }, scales: { yAxes: [ { ticks: { beginAtZero: true, }, gridLines: { display: true, }, }, ], xAxes: [ { gridLines: { display: false, }, barThickness: 30, }, ], }, legend: { display: true, }, responsive: true, maintainAspectRatio: false, }, }; }, }; </script> but if I change the part of the annotation to this (the value of the annotation is not within the data and labels values), It doesn`t work: annotations: [ { type: "line", mode: "vertical", scaleID: "x-axis-0", value: 22, borderColor: "green", borderWidth: 1, label: { enabled: true, position: "center", content: "22", }, }, { type: "line", mode: "vertical", scaleID: "x-axis-0", value: 26, borderColor: "green", borderWidth: 1, label: { enabled: true, position: "center", content: "26", }, }, ],
Try setting max an min values for the axes: suggestedMax, suggestedMin scales: { xAxes: [ { gridLines: { display: false, }, ticks: { suggestedMax: 35, suggestedMin: 20 }, barThickness: 30, }, ],
How to avoid edges overlap in multigraph when using taxi edges?
let styleJson = JSON.parse(` [{ "selector": "node", "style": { "label": "data(id)", "height": "data(height)", "width": "data(width)", "text-valign": "center", "text-halign": "center" } }, { "selector": "node.begin-end", "style": { "shape": "ellipse", "width": "70", "height": "30" } }, { "selector": "node.if", "style": { "shape": "diamond" } }, { "selector": "edge", "style": { "width": 2, "label": "data(id)", "curve-style": "taxi" } }, { "selector": "edge.true", "style": { "taxi-direction": "rightward" } }, { "selector": "edge.false", "style": { "taxi-direction": "leftward" } }] `); let cy = cytoscape({ container: document.getElementById('cy'), style: styleJson, elements: { nodes: [{ data: { id: 'begin' }, classes: 'begin-end' }, { data: { id: 'if', width: "70", height: "30" }, classes: 'if' }, { data: { id: 'end', width: "70", height: "30" }, classes: 'begin-end' } ], edges: [{ data: { id: 'n1', source: 'begin', target: 'if' } }, { data: { id: 'n2', source: 'if', target: 'end' }, classes: 'true' }, { data: { id: 'n3', source: 'if', target: 'end' }, classes: 'false' } ] } }); doLayout(); function doLayout() { let layoutOpts = { name: 'breadthfirst', directed: true }; cy.layout(layoutOpts).run(); } #cy { width: 400px; height: 400px; display: block; border: 1px solid black; margin: 0 auto; } <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Cytoscape</title> </head> <body> <div id="cy"></div> <script src="https://cdn.jsdelivr.net/npm/cytoscape#3.17.1/dist/cytoscape.min.js"></script> </body> </html> I just want to split the 2 edges coming from IF node. The direction is specified (leftward/rightward), but I don't know how to make it working...
Cytoscape.js, position label text on top of edge
I have a label which is painted inline with edge and by this is not rendered well. Is there a way to add something like background shape to the edge text, so that edge line is not visible at the label area?
You can add classes to labels when initializing the cytoscape stylesheet: var cy = (window.cy = cytoscape({ container: document.getElementById("cy"), boxSelectionEnabled: false, autounselectify: true, style: [{ selector: "node", css: { "label": "data(label)", "text-valign": "center", "text-halign": "center", "height": "60px", "width": "60px" } }, { selector: "edge", css: { "target-arrow-shape": "triangle" } }, { selector: "edge[label]", css: { "label": "data(label)", "text-rotation": "autorotate", "text-margin-x": "0px", "text-margin-y": "0px" } }, { selector: ".background", css: { "text-background-opacity": 1, "color": "#fff", "text-background-color": "#000" } }, { selector: ".outline", css: { "color": "#fff", "text-outline-color": "#000", "text-outline-width": 3 } }, { selector: ".top-center", style: { "text-valign": "top", "text-halign": "center" } } ], elements: { nodes: [{ data: { id: '1', label: 'outline' }, classes: 'outline' }, { data: { id: '2', label: 'background' }, classes: 'background' }, { data: { id: '3', label: 'top-center' }, classes: 'top-center' }, { data: { id: '4', label: 'none' } } ], edges: [{ data: { source: "1", target: "2", label: "outline" }, classes: "outline" }, { data: { source: "2", target: "3", label: "background" }, classes: "background" }, { data: { source: "3", target: "4", label: "top-center" }, classes: "top-center" }, { data: { source: "4", target: "1", label: "none" } } ] }, layout: { name: "circle" } })); cy.ready(function() { cy.layout({ name: "circle" }).run(); }); body { font: 14px helvetica neue, helvetica, arial, sans-serif; } #cy { height: 100%; width: 75%; position: absolute; left: 0; top: 0; float: left; } <html> <head> <meta charset=utf-8 /> <meta name="viewport" content="user-scalable=no, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, minimal-ui"> <script src="https://cdnjs.cloudflare.com/ajax/libs/cytoscape/3.2.17/cytoscape.min.js"></script> <script src="https://unpkg.com/jquery#3.3.1/dist/jquery.js"></script> </head> <body> <div id="cy"></div> </body> </html>
how to print the serial number of jqgrid in reverse order
In a jqgrid we will have the index values(sl numbers) on the very first row these values are assigned internally by jqgrid. How to print in reverse order?
$("#predefinedProcessGrid").jqGrid({ data: processTasks, datatype: "local", colNames: ["Assigned By", "Assigned To","Step Name","Created On","Expected Start Date", "Actual Start Date", "Actual End Date","Status","Priority"," IP Address","Past Due (ms)"], colModel: [{ name: "assignedByUserName", index: "assignedByUserName", editable: false, align: "left", width: 130, sorttype:'int', }, { name: "assignedToUserOrOrgText", index: "assignedToUserOrOrgText", editable: false, align: "left", width: 130, },{ name: "processStepName", index: "processStepName", editable: false, align: "left", width: 220, },{ name: "formattedCreatedDateTime", index: "formattedCreatedDateTime", editable: false, align: "left", width: 150, } ,{ name: "formattedExpectedStartDate", index: "formattedExpectedStartDate", editable: false, align: "left", width: 150, }, { name: "formattedActualStartDate", index: "formattedActualStartDate", editable: false, align: "left", width: 150, sorttype:'int', }, { name: "formattedActualEndDate", index: "formattedActualEndDate", editable: false, align: "left", width: 150, }, { name: "formattedUserTaskStatus", index: "formattedUserTaskStatus", editable: false, align: "left", width: 130, sorttype:'int', }, { name: "formattedTaskPriority", index: "formattedTaskPriority", editable: false, align: "left", width: 100, sorttype:'int', }, { name: "userTaskFromIPAddress", index: "userTaskFromIPAddress", editable: false, align: "center", width: 120, sorttype:'int' }, { name: "millisPastDue", index: "millisPastDue", editable: false, align: "center", width: 100, sorttype:'int', } ], // cmTemplate:{resizable:true}, rowNum: 1e5, pager: "#predefinedProcessPager", ignoreCase:true, gridview: true, rownumbers: true, sortable:true, "resizable": true, viewrecords: true, reverse:true, // sortname: 'Expected Start Date', // sortorder: "desc", editurl: "clientArray", sortorder: "desc", autowidth: true, shrinkToFit: false, height: 470, keys: true, hidegrid: false, loadComplete: function () { var e = this; setTimeout(function () { updatePagerIcons(e); enableTooltips(e) }, 0) }, }
Sencha Touch: avoiding blank line while combining Carousel and Toolbar
I'm having an issue while scrolling between items in the vertical carousel: The blank division has the same height as the toolbar. Is there any way to avoid the blank line? This is my current code: Ext.define('eltirabuzon.view.Main', { extend: 'Ext.Container', xtype: 'main', requires: [ 'Ext.TitleBar', 'Ext.Video', 'Ext.carousel.Carousel' ], config: { cls: 'cards', layout: { type: 'vbox', align: 'stretch' }, defaults: { flex: 1 } } }); Ext.create('Ext.Carousel',{ fullscreen: true, height: '100%', direction: 'vertical', directionLock: true, indicator: false, defaults: { directionLock: true, styleHtmlContent: true, margin: 0, padding: 0 }, items: [ { xtype: 'toolbar', dock: 'top', ui: 'dark', title: 'El Tirabuzon', items: [{ xtype: 'button', text: '', docked: 'left', ui: 'action', cls: 'button-options' }] }, { html: 'rtutorial', style: { 'color': '#FFF', 'background-color': '#BBB', 'background-image': 'url(http://gastonbercun.com/wp-content/uploads/2011/08/steve-jobsNews.jpg)', 'background-size': 'cover' } }, { html: 'noticia', style: { 'color': '#FFF', 'background-color': '#BBB', 'background-image': 'url(http://blog.ciencianueva.com/wp-content/uploads/2011/10/steve-jobs-renuncia-a-apple.jpeg)', 'background-size': 'cover' } }, { html: 'lista', style: { 'color': '#FFF', 'background-color': '#BBB', 'background-image': 'url(http://www.biography.com/imported/images/Biography/Images/Galleries/Steve%20Jobs/steve-jobs-photo-NeXT-intro-07-sized.jpg)', 'background-size': 'cover' } }, { html: 'resena', style: { 'color': '#FFF', 'background-color': '#CCC', 'background-image': 'url(http://3.bp.blogspot.com/-HRJITwGr_Vk/TlYaxYFxoKI/AAAAAAAAAPI/3ofib-Z1VgI/s1600/ipadjobsjpg-1426c786c4434809.jpg)', 'background-size': 'cover' } } ] });