Hi Chrisir
It's a project.
I have the code that does not function to put 47 points on the map.
For example. There are 47 cinema halls. So, with the code I found in http://unfoldingmaps.org/tutorials/markers-simple.html , I must put the points one by one. But I would make the points with buckle for: [ for (int i =1; i < lines.length; i++) { ] . But I can not. How I do ?
THIS IS MY CODE :
import de.fhpotsdam.unfolding.mapdisplay.*;
import de.fhpotsdam.unfolding.utils.*;
import de.fhpotsdam.unfolding.marker.*;
import de.fhpotsdam.unfolding.tiles.*;
import de.fhpotsdam.unfolding.interactions.*;
import de.fhpotsdam.unfolding.ui.*;
import de.fhpotsdam.unfolding.*;
import de.fhpotsdam.unfolding.core.*;
import de.fhpotsdam.unfolding.mapdisplay.shaders.*;
import de.fhpotsdam.unfolding.data.*;
import de.fhpotsdam.unfolding.geo.*;
import de.fhpotsdam.unfolding.texture.*;
import de.fhpotsdam.unfolding.events.*;
import de.fhpotsdam.utils.*;
import de.fhpotsdam.unfolding.providers.*;
//Importation de la librairies Unfolding Maps (permet la création d'un point avec SimplePointMarker : Menu Sketch -> Import Library -> Unfolding Maps
import de.fhpotsdam.unfolding.*;
import de.fhpotsdam.unfolding.geo.*;
import de.fhpotsdam.unfolding.utils.*;
import de.fhpotsdam.unfolding.providers.*; //La librairie provider pour le style de la carte
//LES LIBRAIRIES Unfolding pour la carte
UnfoldingMap map; //pour créer un objet carte
SimplePointMarker MontagnardMarker; //Permet de definir le point Montagnard pour ensuite l'utiliser dans le programme
void setup() { //Initialisation
size(800, 600); //Taille de la fenêtre (Largeur, Hauteur)
map = new UnfoldingMap(this, new Microsoft.AerialProvider()); //L'utilisation de la librairie pour le fond de la carte
map.zoomAndPanTo(new Location(47.5f, -1.4f), 10); //les coordonnées géographiques de la PDL
MapUtils.createDefaultEventDispatcher(this, map); //?? reconnait le map (fond) ??
Location PDLLocation = new Location(47.5f,-1.4f); //La lattitude et la longitude de la PDL
map.zoomAndPanTo(PDLLocation, 10); //L'affichage de la carte à 10 km de vu panoramique
float maxPanningDistance = 30; // en km , On peut faire glisser maximum 30 km la carte
map.setPanningRestriction(PDLLocation, maxPanningDistance); //Restriction de la location et la Distance
map.setZoomRange(10, 20); //le zoom maximal sur un point choisi
//PARTIE D'ALEXIANE
String lines[] = loadStrings("donneesopendataavecmodif.csv");//création d'un tableau
println("il y a " + lines.length + " lignes");//affichage du nombre de lignes
for (int i = 0 ; i < lines.length; i++) { //pour i allant de 0 à i++ : création d'un compteur
println("ligne "+i+" : "+ lines[i]); //affichage de la ligne i
}
String[] nom_cinema=new String[ lines.length]; //création du tableau nom_cinéma
String[] decoup=new String[8]; //création d'un tableau de découpe
String[] coupe=new String[2]; //création d'un tableau de découpe
String[] coupe2=new String[3]; // création d'un tableau de découpe
String[] coupe3=new String[10];// création d'un tableau de découpe
String[] adresse_internet=new String[lines.length]; //création du tableau des sites internet
String[] longi=new String[lines.length]; // création du tableau provisoire des longitudes
Float [] longitude=new Float[lines.length]; // création du tableau des longitudes
String[] lati=new String[lines.length]; //création d'un tableau provisoire des latitudes
Float[] latitude=new Float[lines.length]; //création d'un tableau des latitudes
//afficher la liste des noms des cinémas
for (int i = 1; i < lines.length; i++) { //
decoup= split( lines[i], ',');//découpage de chaque ligne
nom_cinema[i]=decoup[0]; //remplissage du tableau nom_cinema
println("Nom du cinéma "+i+" : "+ nom_cinema[i]);//affichage du nom du cinéma
coupe2=split( nom_cinema[i], '"');//découpage de chaque guillemet
println("nom_cinema : "+coupe2[1]); //affichage nom des cinémas
}
//afficher l'adresse internet
for (int i =1; i < lines.length; i++) { //
decoup= split( lines[i], ',');//découpage de chaque ligne
adresse_internet[i]=decoup[4];//remplissage du tableau sites internet
println("Adresse internet du cinéma "+i+" : "+adresse_internet[i]);//affichage de l'adresse internet
coupe3=split( adresse_internet[i], '"');//découpage de chaque guillemet
println("adresse_internet : "+coupe3[2]); //affichage des sites internet
}
// longitude
for (int i =1; i < lines.length; i++) { //
decoup= split( lines[i], ',');//découpage de chaque ligne
longi[i]=decoup[5];//remplissage du tableau des longitudes
//println("Mauvaise longitude "+i+" : "+longitude[i]);//affichage de la longitude
coupe=split( longi[i], "[");//découpage de chaque crochet
longitude[i]=float(coupe[1]); //
println("longitude : "+longitude[i]); //affichage des longitudes
}
// latitude
for (int i =1; i < lines.length; i++) {//
decoup= split( lines[i], ',');//découpage de chaque ligne
lati[i]=decoup[5];//remplissage du tableau des latitudes
//println("Mauvaise latitude "+i+" : "+latitude[i]);//affichage de la latitude
coupe=split( lati[i], "[");//découpage de chaque crochet
latitude[i]=float(coupe[1]);// pour pouvoir afficher les points sur le carte car float:réel et string: chane de caractère
println("latitude : "+latitude[i]);// affichage des latitudes
}
//Le boucle for pour lire tout les établissement.
mousePressed();
for (int i = 0; i < lines.length; i++) {
if (mouseX == i && mouseY == i)
link("http://lemontagnard.cine.allocine.fr/");
Location MontagnardLocation = new Location(47.1884883, -1.6836739); //Localisation de cinema Montagnard
MontagnardMarker = new SimplePointMarker(MontagnardLocation); //Marquage de Montagnard
map.addMarkers(MontagnardMarker);
}
}
//FIN DE LA PARTIE D'ALEXIANE
void draw() { //La commande pour l'affichage de la carte
map.draw(); //Commande de map
Location location = map.getLocation(mouseX, mouseY); //On peut affiché sur l'écran les coordonnées géographiques
fill(0); //Remplir (couleur)
text(location.getLat() + ", " + location.getLon(), mouseX, mouseY); //le nombre à droite presente la lattitude et le gauche : longitude
//LA SUITE DE LA CODE
ScreenPosition MontagnardPos = MontagnardMarker.getScreenPosition(map); //position marquer sur l'ecran
strokeWeight(8); // la grandeur de l'arc
stroke(200, 0, 0, 200); //Couleur de l'arc
strokeCap(SQUARE); //Type de pointage
noFill();
float s = 30; //Grandeur du pointage
arc(MontagnardPos.x, MontagnardPos.y, s, s, -PI * 0.9, -PI * 0.1); // Pour découper l'arc de haut
arc(MontagnardPos.x, MontagnardPos.y, s, s, PI * 0.1, PI * 0.9); // Pour découper l'arc de bas
fill(0); //Couleur de l'écriture
text("Cinéma", MontagnardPos.x - textWidth("Cinéma") / 2, MontagnardPos.y + 4);
}
//Le code pour ouvrir le page internet
// for (int k = 1; k < lines.length; k++) {
// if (mouseX == 47.1884883 && mouseY == -1.6836739)
// void mousePressed() {
// link("http://lemontagnard.cine.allocine.fr/");
If those paths are fixed, you can place them as "global" field variables atop setup() and declare them static too!
The open() command inside setup() seems OK! (*)
Hi,
Afterd adding the code, in Setup, When I open the map, the site appears without clicking a specific point.
And, Wenn I adding the code in Draw , The website appears when I click anywhere on the map.
But I want; the site appears when I click on a point.
For example We can be added "if" but how ? ^^
I have the code if (mouseX == 47.1884883 && mouseY == -1.6836739);
but this point is very precise, so I can't just click on the location on the map.
And I would like to open the link with google chrome not with explorer. Well, I added final String app = "C:\" + "Program Files\Google Chrome\gchrome.exe"; ??
"Nom de l'établissement,""Adresse de l'établissement"",""Code postal"",""Commune"",""""Site internet"""",""[longitude"",""latitude]"""
"Cinéma Le Montagnard,""Place Similien Guérin"",""44620"",""La Montagne"",""lemontagnard.cine.allocine.fr/"",""[ 47.1884883 , -1.6836739]"""
"Le Hublot,""Place Dinan"",""44490"",""Le Croisic"",""www.cinemahublot.com"",""[ 47.2930097 , -2.5095419]"""
"Gaumont Nantes,""12 place du commerce"",""44000"",""Nantes"",""www.cinemasgaumontpathe.com"",""[ 47.2133267 , -1.5574897]"""
"Cinéma Le Beaulieu,""26 rue de Beaulieu"",""44340"",""Bouguenais"",""www.cinemalebeaulieu.com"",""[ 47.1782903 , -1.6248557]"""
"Cinéma Eden,""67 rue Saint-Fiacre"",""44150"",""Ancenis"",""www.cineeden.com"",""[ 47.3656875 , -1.1841246]"""
"Cinéma Le Connétable,""1 cours des Marches de Bretagne"",""44190"",""Clisson"",""www.cinema-leconnetable.fr/"",""[ 47.0864509 , -1.280468]"""
"Katorza,""3 rue Corneille"",""44000"",""Nantes"",""www.katorza.fr"",""[ 47.2136078 , -1.5625501]"""
"Salle Jacques Tati,""33 boulevard Victor Hugo"",""44603"",""Saint-Nazaire"",""www.letheatre-saintnazaire.fr"",""[ 47.2807248 , -2.2163867]"""
"L'Odéon,""7 place de l'Eglise"",""44290"",""Guémené-Penfao"",""www.commeaucinema.com/salle/cinema-l-odeon"",""[ 47.6302765 , -1.8326347]"""
"Cinéma Saint-Gilles,""54 rue de Verdun"",""44210"",""Pornic"",""www.allocine.fr/seance/salle_gen_csalle=P0716.html"",""[ 47.1193374 , -2.1010742]"""
"Cinéma Atlantic,""Place des anciens combattants"",""44420"",""La Turballe"",""www.reperages.biz"",""[ 47.348472 , -2.511759]"""
"Ciné Malouine,""Rue Aristide Briand"",""44550"",""Saint-Malô-de-Guersac"",""www.cinemalouine.a3w.fr"",""[ 47.353027999 , -2.1754478]"""
"Cinéville,""Rue Marie Curie"",""44230"",""Saint-Sébastien sur Loire"",""www.cineville.fr"",""[ 47.1896137 , -1.4851055]"""
"Montluc Cinéma,""Rue Chauvin de la Musse"",""44360"",""Saint-Etienne-de-Montluc"",""www.montluc-cinema.weebly.com"",""[ 47.2757012 , -1.7795501]"""
"Ciné Vaillant,""12 rue du Général De Gaulle"",""44120"",""Vertou"",""www.cinevaillant.com"",""[ 47.1675021 , -1.4696791999]"""
"Saint-Joseph,""14 rue Notre-Dame"",""44210"",""Sainte-Marie-sur-Mer"",""www.allocine.fr/seance/salle_gen_csalle=P2368.html"",""[ 47.1142605999 , -2.1279528]"""
"Gulf Stream,""52 avenue du Général De Gaulle"",""44500"",""La Baule"",""www.allocine.fr/seance/salle_gen_csalle=P0396.html"",""[ 47.2837292 , -2.3918934]"""
"Ciné Pole Sud,""Route de Clisson"",""44115"",""Basse-Goulaine"",""www.cinepolesud.fr"",""[ 47.1851988 , -1.4483186]"""
"Cinéma Pax,""5 rue Maréchal Joffre"",""44510"",""Le Pouliguen"",""www.reperages.biz"",""[ 47.2760547 , -2.429844]"""
"Ciné Phil,""Rue de la cure"",""44310"",""Saint-Philbert-de-Grandlieu"",""www.cinephil.fr"",""[ 47.034876 , -1.6420699]"""
"Cinéma Saint-Laurent,""9 rue du 11 novembre"",""44130"",""Blain"",""www.cineblain.fr"",""[ 47.4763785 , -1.7639012]"""
"La Bobine,""6 place de la gare"",""44160"",""Pontchâteau"",""www.allocine.fr/seance/salle_gen_csalle=P1419.html"",""[ 47.4359066 , -2.0885025]"""
"Cinéma Saint-Michel,""20 rue du Redois"",""44730"",""Saint-Michel Chef Chef"",""www.allocine.fr/seance/salle_gen_csalle=W1146.html"",""[ 47.1809564 , -2.1500492]"""
"Ciné Loroux,""Rue de la Liotterie"",""44430"",""Le Loroux-Bottereau"",""pagesperso-orange.fr/cineloroux"",""[ 47.2363295 , -1.3487288]"""
"Cinéma Jeanne d'Arc,""15 rue de la mer"",""44760"",""La Bernerie en Retz"",""www.mairie-labernerie.fr/?p=767"",""[ 47.0796364 , -2.0391846]"""
"Cinéma Bonne-Garde,""20 rue du frère Louis"",""44200"",""Nantes"",""www.cinebonnegarde.ift.fr"",""[ 47.1952762 , -1.5383884]"""
"Espace Culturel,""Rue Gabriel Deshayes"",""44530"",""Saint-Gildas des Bois"",""www.infolocale.fr/saint-gildas-des-bois_44161_cinema-familles-rurales_8231/agenda?date_debut=01-01-2012&date_fin=31-12-2012"",""[ 47.5153946 , -2.0404892]"""
"Lutétia,""18 rue des calvaires"",""44800"",""Saint-Herblain"",""www.cine-lutetia.net/"",""[ 47.2140196 , -1.6493339]"""
"Cinéville,""5 boulevard de la Légion d'Honneur - BP 408"",""44600"",""Saint-Nazaire"",""www.cineville.fr"",""[ 47.2750611 , -2.203853]"""
"Ciné Presqu'île,""3 avenue Anne de Bretagne"",""44350"",""Guérande"",""www.allocine.fr/seance/salle_gen_csalle=W4435.html"",""[ 47.3316132 , -2.4281512]"""
"Le Nozek,""Rue de la gare"",""44170"",""Nozay"",""www.nozay44.com/lenozek"",""[ 47.5548136 , -1.5253859]"""
"Cinéma Jacques Demy,""11 rue du stade"",""44450"",""La Chapelle-Basse-Mer"",""www.cinema-la-chapelle-basse-mer.fr"",""[ 47.2700112 , -1.3351477]"""
"Atlantic Ciné,""21 rue de la vernisserie"",""44110"",""Châteaubriant"",""www.atlanticcine.com"",""[ 47.7225637 , -1.3772438]"""
"Cinéma Paradiso,""24 boulevard de la gare - BP 14"",""44390"",""Nort-sur-Erdre"",""www.cinema-paradiso.asso.fr/"",""[ 47.4411312 , -1.5029358]"""
"Cinéjade,""Parc d'activité de la Guerche"",""44250"",""Saint-Brévin-les-Pins"",""www.saint-brevin.fr/tourisme/cinema-cinejade.html"",""[ 47.246659 , -2.165807]"""
"Cinéma Saint-Paul,""38 rue Julien Douillard"",""44400"",""Rezé"",""cinesaintpaul.free.fr"",""[ 47.1839593 , -1.5439873]"""
"Espace Renaissance,""1 rue Laënnec"",""44480"",""Donges"",""www.ville-donges.fr"",""[ 47.3469263 , -2.5040451]"""
"Pathé Atlantis,""Allée de la Pérouse"",""44800"",""Saint-Herblain"",""www.cinemasgaumontpathe.com"",""[ 47.2225519 , -1.6262387]"""
"Cinéma Victoria,""Rue Saint-Victor"",""44750"",""Campbon"",""www.cinema-victoria44.ici.st/"",""[ 47.411658 , -1.96546]"""
"Cinéma Le Cep,""8 boulevard Evariste Dejoie"",""44330"",""Vallet"",""www.cinemalecep.fr"",""[ 47.1624427 , -1.264214]"""
"UGC Ciné Cité Atlantis,""Place Jean Bart"",""44812"",""Saint-Herblain"",""www.ugc.fr"",""[ 47.2242998 , -1.625475]"""
"Cinéma Atlantique,""Grande rue"",""44770"",""Préfailles"",""www.le-site-de.com/cinema-atlantique-prefailles_245460.html#"",""[ 47.1285262 , -2.2164049]"""
"Cinéma Jeanne d'Arc,""17 boulevard de la Ferronnays"",""44540"",""Saint-Mars-la-Jaille"",""cinema.jeannedarc.free.fr/"",""[ 47.5236939 , -1.1875681]"""
"Cinéma Concorde,""79 boulevard Egalité"",""44100"",""Nantes"",""www.leconcorde.fr"",""[ 47.2111544 , -1.5868273]"""
"Cinémachecoul,""23 rue des Capucins"",""44270"",""Machecoul"",""www.allocine.fr/seance/salle_gen_csalle=P4427.html"",""[ 46.993228 , -1.8235064]"""
"Cinéma Le Gen'eric,""Rue de l'océan - BP 6"",""44810"",""Héric"",""www.cinema-generic.com/"",""[ 47.415069 , -1.6577089]"""
(ctrl-k works with csv also. although i had to remove the http:// as the forum was doing its thing with them. they seemed optional anyway - half the links didn't have them)
when posting code you should highlight it and hit ctrl-k so that it's indented. this means the forum will format it as code, see above, and not just paragraphs of text. this is especially important when posting processing scripts but also things like csv files.
however, the formatter doesn't like http:// links - it tries to make them hyperlinks before the code gets formatted and it screws up. so i removed all the http:// from your code to stop this. it shouldn't affect the results.
to make the link work you need to call it only when one spot on your map is clicked.
you wrote:
And I would like to open the link with google chrome not with explorer. Well, I added final String app = "C:\" + "Program Files\Google Chrome\gchrome.exe"; ??
yes, you have to change the path in the code above
final String app = "C:\\" + "Program Files\\Google Chrome\\gchrome.exe";
All right..
Finally, I removed the unnecessary codes and I managed to make "the site appears when I click on a point. "
And I have
import de.fhpotsdam.unfolding.mapdisplay.*;
import de.fhpotsdam.unfolding.utils.*;
import de.fhpotsdam.unfolding.marker.*;
import de.fhpotsdam.unfolding.tiles.*;
import de.fhpotsdam.unfolding.interactions.*;
import de.fhpotsdam.unfolding.ui.*;
import de.fhpotsdam.unfolding.*;
import de.fhpotsdam.unfolding.core.*;
import de.fhpotsdam.unfolding.mapdisplay.shaders.*;
import de.fhpotsdam.unfolding.data.*;
import de.fhpotsdam.unfolding.geo.*;
import de.fhpotsdam.unfolding.texture.*;
import de.fhpotsdam.unfolding.events.*;
import de.fhpotsdam.utils.*;
import de.fhpotsdam.unfolding.providers.*;
//Importation de la librairies Unfolding Maps (permet la création d'un point avec SimplePointMarker : Menu Sketch -> Import Library -> Unfolding Maps
import de.fhpotsdam.unfolding.*;
import de.fhpotsdam.unfolding.geo.*;
import de.fhpotsdam.unfolding.utils.*;
import de.fhpotsdam.unfolding.providers.*; //La librairie provider pour le style de la carte
//LES LIBRAIRIES Unfolding pour la carte
UnfoldingMap map; //pour créer un objet carte
SimplePointMarker MontagnardMarker; //Permet de definir le point Montagnard pour ensuite l'utiliser dans le programme
void setup() { //Initialisation
size(800, 600); //Taille de la fenêtre (Largeur, Hauteur)
map = new UnfoldingMap(this, new Microsoft.AerialProvider()); //L'utilisation de la librairie pour le fond de la carte
map.zoomAndPanTo(new Location(47.5f, -1.4f), 10); //les coordonnées géographiques de la PDL
MapUtils.createDefaultEventDispatcher(this, map); //?? reconnait le map (fond) ??
Location PDLLocation = new Location(47.5f,-1.4f); //La lattitude et la longitude de la PDL
map.zoomAndPanTo(PDLLocation, 10); //L'affichage de la carte à 10 km de vu panoramique
float maxPanningDistance = 30; // en km , On peut faire glisser maximum 30 km la carte
map.setPanningRestriction(PDLLocation, maxPanningDistance); //Restriction de la location et la Distance
map.setZoomRange(10, 20); //le zoom maximal sur un point choisi
Location MontagnardLocation = new Location(47.1884883, -1.6836739); //(longitude;lattitude)
MontagnardMarker = new SimplePointMarker(MontagnardLocation); //Marquage de Montagnard
map.addMarkers(MontagnardMarker);
//PARTIE D'ALEXIANE*************************************************************
//********************************************************************************
String lines[] = loadStrings("donneesopendataavecmodif.csv");//création d'un tableau
println("il y a " + lines.length + " lignes");//affichage du nombre de lignes
for (int i = 0 ; i < lines.length; i++) { //pour i allant de 0 à i++ : création d'un compteur
println("ligne "+i+" : "+ lines[i]); //affichage de la ligne i
}
String[] nom_cinema=new String[ lines.length]; //création du tableau nom_cinéma
String[] decoup=new String[8]; //création d'un tableau de découpe
String[] coupe=new String[2]; //création d'un tableau de découpe
String[] coupe2=new String[3]; // création d'un tableau de découpe
String[] coupe3=new String[10];// création d'un tableau de découpe
String[] adresse_internet=new String[lines.length]; //création du tableau des sites internet
String[] Ad_internet=new String[lines.length]; //création du tableau des sites internet
String[] longi=new String[lines.length]; // création du tableau provisoire des longitudes
Float [] longitude=new Float[lines.length]; // création du tableau des longitudes
String[] lati=new String[lines.length]; //création d'un tableau provisoire des latitudes
Float[] latitude=new Float[lines.length]; //création d'un tableau des latitudes
//afficher la liste des noms des cinémas
for (int i = 1; i < lines.length; i++) { //
decoup= split( lines[i], ',');//découpage de chaque ligne
nom_cinema[i]=decoup[0]; //remplissage du tableau nom_cinema
println("Nom du cinéma "+i+" : "+ nom_cinema[i]);//affichage du nom du cinéma
coupe2=split( nom_cinema[i], '"');//découpage de chaque guillemet
println("nom_cinema : "+coupe2[1]); //affichage nom des cinémas
}
//afficher l'adresse internet
for (int i =1; i < lines.length; i++) { //
decoup= split( lines[i], ',');//découpage de chaque ligne
adresse_internet[i]=decoup[4];//remplissage du tableau sites internet
println("Adresse internet du cinéma "+i+" : "+adresse_internet[i]);//affichage de l'adresse internet
coupe3=split( adresse_internet[i], '"');//découpage de chaque guillemet
println("adresse_internet : "+coupe3[2]); //affichage des sites internet
Ad_internet[i]=coupe3[2];
println("adresse_internet : "+Ad_internet[i]); //affichage des sites internet
}
// longitude
for (int i =1; i < lines.length; i++) { //
decoup= split( lines[i], ',');//découpage de chaque ligne
longi[i]=decoup[5];//remplissage du tableau des longitudes
//println("Mauvaise longitude "+i+" : "+longitude[i]);//affichage de la longitude
coupe=split( longi[i], "[");//découpage de chaque crochet
longitude[i]=float(coupe[1]); //
println("longitude : "+longitude[i]); //affichage des longitudes
}
// latitude
for (int i =1; i < lines.length; i++) {//
decoup= split( lines[i], ',');//découpage de chaque ligne
lati[i]=decoup[6];//remplissage du tableau des latitudes
//println("Mauvaise latitude "+i+" : "+latitude[i]);//affichage de la latitude
coupe=split( lati[i], "]");//découpage de chaque crochet
latitude[i]=float(coupe[0]);// pour pouvoir afficher les points sur le carte car float:réel et string: chane de caractère
println("latitude : "+latitude[i]);// affichage des latitudes
}
//Le boucle for pour lire tout les établissement.
}
//FIN DE LA PARTIE D'ALEXIANE*****************************************
void draw() { //La commande pour l'affichage de la carte
map.draw(); //Commande de map
Location location = map.getLocation(mouseX, mouseY); //On peut affiché sur l'écran les coordonnées géographiques
fill(0); //Remplir (couleur)
text(location.getLat() + ", " + location.getLon(), mouseX, mouseY); //le nombre à droite presente la lattitude et le gauche : longitude
// CODE POUR MARQUER UN POINT SUR LA CARTE
ScreenPosition MontagnardPos = MontagnardMarker.getScreenPosition(map); //position marquer sur l'ecran
strokeWeight(8); // la grandeur de l'arc
stroke(200, 0, 0, 200); //Couleur de l'arc
strokeCap(SQUARE); //Type de pointage
noFill();
float s = 30; //Grandeur du pointage
arc(MontagnardPos.x, MontagnardPos.y, s, s, -PI * 0.9, -PI * 0.1); // Pour découper l'arc de haut
arc(MontagnardPos.x, MontagnardPos.y, s, s, PI * 0.1, PI * 0.9); // Pour découper l'arc de bas
fill(0); //Couleur de l'écriture
text("Cinéma", MontagnardPos.x - textWidth("Cinéma") / 2, MontagnardPos.y + 4);
float L= MontagnardPos.x; //Definir le variable L longitude
float l= MontagnardPos.y; // Definir le variabli l lattitude
if( mouseX > L-15 && mouseX<L+15 && mouseY>l-15 && mouseY<l+15 && mousePressed == true) //Si on clique ...
{
link("http:// + lemontagnard.cine.allocine.fr/"); //Alors afficher le site
//link(Ad_internet[1]);
}
}
now you have an array data with the data for that cinema
now you have the lines 43-45: add a point
these lines must also go into the for-loop
and you must check if data is ok or remove [ and ] e.g.
for (int i = 0 ; i < lines.length; i++) { //pour i allant de 0 à i++ : création d'un compteur
String[] data = split (lines[i], "," );
Location MontagnardLocation = new Location(data[5], data[6]); //(longitude;lattitude)
MontagnardMarker = new SimplePointMarker(MontagnardLocation); //Marquage de Montagnard
map.addMarkers(MontagnardMarker);
} // for
import de.fhpotsdam.unfolding.mapdisplay.*;
import de.fhpotsdam.unfolding.utils.*;
import de.fhpotsdam.unfolding.marker.*;
import de.fhpotsdam.unfolding.tiles.*;
import de.fhpotsdam.unfolding.interactions.*;
import de.fhpotsdam.unfolding.ui.*;
import de.fhpotsdam.unfolding.*;
import de.fhpotsdam.unfolding.core.*;
import de.fhpotsdam.unfolding.mapdisplay.shaders.*;
import de.fhpotsdam.unfolding.data.*;
import de.fhpotsdam.unfolding.geo.*;
import de.fhpotsdam.unfolding.texture.*;
import de.fhpotsdam.unfolding.events.*;
import de.fhpotsdam.utils.*;
import de.fhpotsdam.unfolding.providers.*;
//Importation de la librairies Unfolding Maps (permet la création d'un point avec SimplePointMarker : Menu Sketch -> Import Library -> Unfolding Maps
import de.fhpotsdam.unfolding.*;
import de.fhpotsdam.unfolding.geo.*;
import de.fhpotsdam.unfolding.utils.*;
import de.fhpotsdam.unfolding.providers.*; //La librairie provider pour le style de la carte
//LES LIBRAIRIES Unfolding pour la carte
UnfoldingMap map; //pour créer un objet carte
SimplePointMarker MontagnardMarker; //Permet de definir le point Montagnard pour ensuite l'utiliser dans le programme
final String quotationMark = "\"";
String[] lines;
String[] nom_cinema;
String[] Ad_internet;
ScreenPosition[] montagnardPositions;//
// -------------------------------------------------------------------
void setup() { //Initialisation
size(800, 600, P2D); //Taille de la fenêtre (Largeur, Hauteur)
map = new UnfoldingMap(this, new Microsoft.AerialProvider()); //L'utilisation de la librairie pour le fond de la carte
map.zoomAndPanTo(new Location(47.5f, -1.4f), 10); //les coordonnées géographiques de la PDL
MapUtils.createDefaultEventDispatcher(this, map); //?? reconnait le map (fond) ??
Location PDLLocation = new Location(47.5f, -1.4f); //La lattitude et la longitude de la PDL
map.zoomAndPanTo(PDLLocation, 10); //L'affichage de la carte à 10 km de vu panoramique
float maxPanningDistance = 30; // en km , On peut faire glisser maximum 30 km la carte
map.setPanningRestriction(PDLLocation, maxPanningDistance); //Restriction de la location et la Distance
map.setZoomRange(10, 20); //le zoom maximal sur un point choisi
Location MontagnardLocation = new Location(47.1884883, -1.6836739); //(longitude;lattitude)
MontagnardMarker = new SimplePointMarker(MontagnardLocation); //Marquage de Montagnard
map.addMarkers(MontagnardMarker);
//PARTIE D'ALEXIANE*************************************************************
//********************************************************************************
println("\n**************************************************************\n");
lines = loadStrings("donneesopendataavecmodif.csv");//création d'un tableau
println("il y a " + lines.length + " lignes");//affichage du nombre de lignes
for (int i = 0 ; i < lines.length; i++) { //pour i allant de 0 à i++ : création d'un compteur
println("ligne "+i+" : "+ lines[i]); //affichage de la ligne i
}
nom_cinema=new String[ lines.length]; //création du tableau nom_cinéma
String[] decoup=new String[8]; //création d'un tableau de découpe
String[] coupe=new String[2]; //création d'un tableau de découpe
String[] coupe2=new String[3]; // création d'un tableau de découpe
String[] coupe3=new String[10];// création d'un tableau de découpe
String[] adresse_internet=new String[lines.length]; //création du tableau des sites internet
Ad_internet=new String[lines.length]; //création du tableau des sites internet
String[] longi=new String[lines.length]; // création du tableau provisoire des longitudes
Float [] longitude=new Float[lines.length]; // création du tableau des longitudes
String[] lati=new String[lines.length]; //création d'un tableau provisoire des latitudes
Float[] latitude=new Float[lines.length]; //création d'un tableau des latitudes
montagnardPositions=new ScreenPosition[lines.length];
//afficher la liste des noms des cinémas
println ("start for-loop--------------------------------");
for (int i = 1; i < lines.length; i++) { //
decoup = split( lines[i], "," );//découpage de chaque ligne
nom_cinema[i]=decoup[0]; //remplissage du tableau nom_cinema
println("Nom du cinéma "+i+" : "+ nom_cinema[i]);//affichage du nom du cinéma
coupe2=split( nom_cinema[i], quotationMark );//découpage de chaque guillemet
println("nom_cinema : "+coupe2[1]); //affichage nom des cinémas
nom_cinema[i]=coupe2[1];
}
println ("end for-loop--------------------------------");
//afficher l'adresse internet
for (int i =1; i < lines.length; i++) { //
decoup= split( lines[i], "," );//découpage de chaque ligne
adresse_internet[i]=decoup[4];//remplissage du tableau sites internet
println("Adresse internet du cinéma "+i+" : "+adresse_internet[i]);//affichage de l'adresse internet
coupe3=split( adresse_internet[i], quotationMark );//découpage de chaque guillemet
println("adresse_internet : "+coupe3[2]); //affichage des sites internet
Ad_internet[i]=coupe3[2];
println("adresse_internet : "+Ad_internet[i]); //affichage des sites internet
}
// longitude
for (int i =1; i < lines.length; i++) { //
decoup= split( lines[i], "," );//découpage de chaque ligne
longi[i]=decoup[5];//remplissage du tableau des longitudes
//println("Mauvaise longitude "+i+" : "+longitude[i]);//affichage de la longitude
coupe=split( longi[i], "[");//découpage de chaque crochet
longitude[i]=float(coupe[1]); //
println("longitude : "+longitude[i]); //affichage des longitudes
}
// latitude
for (int i =1; i < lines.length; i++) {//
decoup= split( lines[i], "," );//découpage de chaque ligne
lati[i]=decoup[6];//remplissage du tableau des latitudes
//println("Mauvaise latitude "+i+" : "+latitude[i]);//affichage de la latitude
coupe=split( lati[i], "]");//découpage de chaque crochet
latitude[i]=float(coupe[0]);// pour pouvoir afficher les points sur le carte car float:réel et string: chane de caractère
println("latitude : "+latitude[i]);// affichage des latitudes
MontagnardLocation = new Location(longitude[i], latitude[i]); //(longitude;lattitude)
MontagnardMarker = new SimplePointMarker(MontagnardLocation); //Marquage de Montagnard
map.addMarkers(MontagnardMarker);
montagnardPositions[i] = MontagnardMarker.getScreenPosition(map); //position marquer sur l'ecran
} // for
println("\nEnd of setup() \n");
//Le boucle for pour lire tout les établissement.
} // func
//FIN DE LA PARTIE D'ALEXIANE*****************************************
void draw() {
//La commande pour l'affichage de la carte
map.draw(); //Commande de map
Location location = map.getLocation(mouseX, mouseY); //On peut affiché sur l'écran les coordonnées géographiques
fill(0); //Remplir (couleur)
text(location.getLat() + ", " + location.getLon(), mouseX, mouseY); //le nombre à droite presente la lattitude et le gauche : longitude
// CODE POUR MARQUER UN POINT SUR LA CARTE
for (int i = 1; i < montagnardPositions.length; i++) {
ScreenPosition MontagnardPos = montagnardPositions[i] ; //position marquer sur l'ecran
strokeWeight(8); // la grandeur de l'arc
stroke(200, 0, 0, 200); //Couleur de l'arc
strokeCap(SQUARE); //Type de pointage
noFill();
float s = 30; //Grandeur du pointage
arc(MontagnardPos.x, MontagnardPos.y, s, s, -PI * 0.9, -PI * 0.1); // Pour découper l'arc de haut
arc(MontagnardPos.x, MontagnardPos.y, s, s, PI * 0.1, PI * 0.9); // Pour découper l'arc de bas
fill(0); //Couleur de l'écriture
// text("Cinéma", MontagnardPos.x - textWidth("Cinéma") / 2, MontagnardPos.y + 4);
textAlign(CENTER);
text(nom_cinema[i], MontagnardPos.x, MontagnardPos.y + 4);
} // for
} // func
void mousePressed() {
// Si on clique ...
// check pos
for (int i = 1; i < montagnardPositions.length; i++) {
ScreenPosition MontagnardPos = montagnardPositions[i] ; //position marquer sur l'ecran
float L= MontagnardPos.x; //Definir le variable L longitude
float l= MontagnardPos.y; // Definir le variabli l lattitude
if ( mouseX > L-15 && mouseX<L+15 &&
mouseY>l-15 && mouseY<l+15 ) //Si on clique ...
{
// link("http:// + lemontagnard.cine.allocine.fr/"); //Alors afficher le site
println ( nom_cinema[i] );
link(Ad_internet[i]);
return; // exit
} // if
} // for
} // func
//
good evening,
I think you have spent a time with the code. :)
it's a bit difficult to understand the codes.
When I added on processing the code that you give me. It not running
Then, I have some questions;
Why you write ;
println("\n**************************************************************\n");
Ahh okey,
I wanted to understand the code. I want to say, when I execute the program too bug.
The map moves very slowly and when I move the map, the red points don't move with the map. they remain stable. So the gray spots appear:((
I think that I will not add red arc on gray points.
I want just to change the color of gray points.
Doing red for example. so I used;
MontagnardMarker.setColor(color(255, 0, 0, 255)); //Couleur des points
your setup() is very long. The for-loop line is always the same (80,91,102...) and the line after this as well (81,92,103...) - you can have all in one for-loop.
It's not too bad since setup() runs only once, other than setup().
your draw()
your draw() is slow because you draw the map each time. It would be cool if you draw the map only once. And then draw the map only when user did pan or zoom it. I am not sure how to do it. Or how to optimize the map otherwise.
import de.fhpotsdam.unfolding.mapdisplay.*;
import de.fhpotsdam.unfolding.utils.*;
import de.fhpotsdam.unfolding.marker.*;
import de.fhpotsdam.unfolding.tiles.*;
import de.fhpotsdam.unfolding.interactions.*;
import de.fhpotsdam.unfolding.ui.*;
import de.fhpotsdam.unfolding.*;
import de.fhpotsdam.unfolding.core.*;
import de.fhpotsdam.unfolding.mapdisplay.shaders.*;
import de.fhpotsdam.unfolding.data.*;
import de.fhpotsdam.unfolding.geo.*;
import de.fhpotsdam.unfolding.texture.*;
import de.fhpotsdam.unfolding.events.*;
import de.fhpotsdam.utils.*;
import de.fhpotsdam.unfolding.providers.*;
//Importation de la librairies Unfolding Maps (permet la création d'un point avec SimplePointMarker : Menu Sketch -> Import Library -> Unfolding Maps
import de.fhpotsdam.unfolding.*;
import de.fhpotsdam.unfolding.geo.*;
import de.fhpotsdam.unfolding.utils.*;
import de.fhpotsdam.unfolding.providers.*; //La librairie provider pour le style de la carte
//LES LIBRAIRIES Unfolding pour la carte
UnfoldingMap map; //pour créer un objet carte
SimplePointMarker MontagnardMarker; //Permet de definir le point Montagnard pour ensuite l'utiliser dans le programme
final String quotationMark = "\"";
String[] lines;
String[] nom_cinema;
String[] Ad_internet;
SimplePointMarker[] montagnardPositions;
// -------------------------------------------------------------------
void setup() { //Initialisation
size(800, 600, P2D); //Taille de la fenêtre (Largeur, Hauteur)
background(0);
map = new UnfoldingMap(this, new Microsoft.AerialProvider()); //L'utilisation de la librairie pour le fond de la carte
map.zoomAndPanTo(new Location(47.5f, -1.4f), 10); //les coordonnées géographiques de la PDL
MapUtils.createDefaultEventDispatcher(this, map); //?? reconnait le map (fond) ??
Location PDLLocation = new Location(47.5f, -1.4f); //La lattitude et la longitude de la PDL
map.zoomAndPanTo(PDLLocation, 10); //L'affichage de la carte à 10 km de vu panoramique
float maxPanningDistance = 30; // en km , On peut faire glisser maximum 30 km la carte
map.setPanningRestriction(PDLLocation, maxPanningDistance); //Restriction de la location et la Distance
map.setZoomRange(10, 20); //le zoom maximal sur un point choisi
//PARTIE D'ALEXIANE*************************************************************
//********************************************************************************
lines = loadStrings("donneesopendataavecmodif.csv");//création d'un tableau
println("il y a " + lines.length + " lignes");//affichage du nombre de lignes
nom_cinema=new String[ lines.length]; //création du tableau nom_cinéma
String[] decoup=new String[8]; //création d'un tableau de découpe
String[] coupe=new String[2]; //création d'un tableau de découpe
String[] coupe2=new String[3]; // création d'un tableau de découpe
String[] coupe3=new String[10];// création d'un tableau de découpe
String[] adresse_internet=new String[lines.length]; //création du tableau des sites internet
Ad_internet=new String[lines.length]; //création du tableau des sites internet
String[] longi=new String[lines.length]; // création du tableau provisoire des longitudes
Float [] longitude=new Float[lines.length]; // création du tableau des longitudes
String[] lati=new String[lines.length]; //création d'un tableau provisoire des latitudes
Float[] latitude=new Float[lines.length]; //création d'un tableau des latitudes
montagnardPositions=new SimplePointMarker[lines.length];
//afficher la liste des noms des cinémas
for (int i = 1; i < lines.length; i++) { //
decoup = split( lines[i], "," );//découpage de chaque ligne
nom_cinema[i]=decoup[0]; //remplissage du tableau nom_cinema
//println("Nom du cinéma "+i+" : "+ nom_cinema[i]);//affichage du nom du cinéma
coupe2=split( nom_cinema[i], quotationMark );//découpage de chaque guillemet
// println("nom_cinema : "+coupe2[1]); //affichage nom des cinémas
nom_cinema[i]=coupe2[1];
}
//afficher l'adresse internet
for (int i =1; i < lines.length; i++) { //
decoup= split( lines[i], "," );//découpage de chaque ligne
adresse_internet[i]=decoup[4];//remplissage du tableau sites internet
// println("Adresse internet du cinéma "+i+" : "+adresse_internet[i]);//affichage de l'adresse internet
coupe3=split( adresse_internet[i], quotationMark );//découpage de chaque guillemet
//println("adresse_internet : "+coupe3[2]); //affichage des sites internet
Ad_internet[i]=coupe3[2];
//println("adresse_internet : "+Ad_internet[i]); //affichage des sites internet
}
// longitude
for (int i =1; i < lines.length; i++) { //
decoup= split( lines[i], "," );//découpage de chaque ligne
longi[i]=decoup[5];//remplissage du tableau des longitudes
//println("Mauvaise longitude "+i+" : "+longitude[i]);//affichage de la longitude
coupe=split( longi[i], "[");//découpage de chaque crochet
longitude[i]=float(coupe[1]); //
//println("longitude : "+longitude[i]); //affichage des longitudes
}
// latitude
for (int i =1; i < lines.length; i++) {//
decoup= split( lines[i], "," );//découpage de chaque ligne
lati[i]=decoup[6];//remplissage du tableau des latitudes
//println("Mauvaise latitude "+i+" : "+latitude[i]);//affichage de la latitude
coupe=split( lati[i], "]");//découpage de chaque crochet
latitude[i]=float(coupe[0]);// pour pouvoir afficher les points sur le carte car float:réel et string: chane de caractère
//println("latitude : "+latitude[i]);// affichage des latitudes
Location MontagnardLocation;
MontagnardLocation = new Location(longitude[i], latitude[i]);
MontagnardMarker = new SimplePointMarker(MontagnardLocation); //Marquage de Montagnard
map.addMarkers(MontagnardMarker);
montagnardPositions[i] = MontagnardMarker;
} // for
//Le boucle for pour lire tout les établissement.
} // func
//FIN DE LA PARTIE D'ALEXIANE*****************************************
void draw() {
background(0);
//La commande pour l'affichage de la carte
map.draw(); //Commande de map
Location location = map.getLocation(mouseX, mouseY); //On peut affiché sur l'écran les coordonnées géographiques
fill(0); //Remplir (couleur)
text(location.getLat() + ", " + location.getLon(), mouseX, mouseY); //le nombre à droite presente la lattitude et le gauche : longitude
// CODE POUR MARQUER UN POINT SUR LA CARTE
for (int i = 1; i < montagnardPositions.length; i++) {
ScreenPosition MontagnardPos = montagnardPositions[i].getScreenPosition(map); //position marquer sur l'ecran
strokeWeight(8); // la grandeur de l'arc
stroke(200, 0, 0, 200); //Couleur de l'arc
strokeCap(SQUARE); //Type de pointage
noFill();
float s = 30; //Grandeur du pointage
arc(MontagnardPos.x, MontagnardPos.y, s, s, -PI * 0.9, -PI * 0.1); // Pour découper l'arc de haut
arc(MontagnardPos.x, MontagnardPos.y, s, s, PI * 0.1, PI * 0.9); // Pour découper l'arc de bas
fill(0); //Couleur de l'écriture
// text("Cinéma", MontagnardPos.x - textWidth("Cinéma") / 2, MontagnardPos.y + 4);
textAlign(CENTER);
text(nom_cinema[i], MontagnardPos.x, MontagnardPos.y + 4);
} // for
} // func
void mousePressed() {
// Si on clique ...
// check pos
for (int i = 1; i < montagnardPositions.length; i++) {
ScreenPosition MontagnardPos = montagnardPositions[i].getScreenPosition(map); //position marquer sur l'ecran
float L= MontagnardPos.x; //Definir le variable L longitude
float l= MontagnardPos.y; // Definir le variabli l lattitude
if ( mouseX > L-15 && mouseX<L+15 &&
mouseY>l-15 && mouseY<l+15 ) //Si on clique ...
{
// link("http:// + lemontagnard.cine.allocine.fr/"); //Alors afficher le site
println ( nom_cinema[i] );
link(Ad_internet[i]);
return; // exit
} // if
} // for
} // func
//
Answers
don't expect that people write code here for you
is that homework?
in which form do you have the map? image? do you intend using a map?
in which form do you have the 47 points?
why using "for"?
better show your code and then tell your problems.
thanks.
Or post in Events & Opportunity with a job proposal...
Hi Chrisir It's a project. I have the code that does not function to put 47 points on the map. For example. There are 47 cinema halls. So, with the code I found in http://unfoldingmaps.org/tutorials/markers-simple.html , I must put the points one by one. But I would make the points with buckle for: [ for (int i =1; i < lines.length; i++) { ] . But I can not. How I do ?
THIS IS MY CODE :
Or I wanted a code that allows me to open a site when you click on a point.
can you post
donneesopendataavecmodif.csv
here (forum destroys links)
Well, since we post in this forum continually, better learn some tricks to evade those irritating format bugs: :O)
wow! ;-)
.
If those paths are fixed, you can place them as "global" field variables atop setup() and declare them
static
too!The open() command inside setup() seems OK! (*)
post the lines of csv here
Hi, Afterd adding the code, in Setup, When I open the map, the site appears without clicking a specific point.
And, Wenn I adding the code in Draw , The website appears when I click anywhere on the map. But I want; the site appears when I click on a point.
For example We can be added "if" but how ? ^^ I have the code if (mouseX == 47.1884883 && mouseY == -1.6836739);
but this point is very precise, so I can't just click on the location on the map.
And I would like to open the link with google chrome not with explorer. Well, I added final String app = "C:\" + "Program Files\Google Chrome\gchrome.exe"; ??
**The dossier CSV is: **
(ctrl-k works with csv also. although i had to remove the http:// as the forum was doing its thing with them. they seemed optional anyway - half the links didn't have them)
Hi Koogs I did not understand what you say :/
when posting code you should highlight it and hit ctrl-k so that it's indented. this means the forum will format it as code, see above, and not just paragraphs of text. this is especially important when posting processing scripts but also things like csv files.
however, the formatter doesn't like http:// links - it tries to make them hyperlinks before the code gets formatted and it screws up. so i removed all the http:// from your code to stop this. it shouldn't affect the results.
setup() { // code without ctrl-k }
to make the link work you need to call it only when one spot on your map is clicked.
you wrote:
yes, you have to change the path in the code above
I think you want a double \\
All right.. Finally, I removed the unnecessary codes and I managed to make "the site appears when I click on a point. "
And I have
Thanks koogs I understood a little ^^ I'll try to do as you
Now the problem: I want a code with "for" to put 46 points on a map with the information from donneesopendataavecmodif.csv :)
I see.
In line 52 you have a for loop already.
you need to do more in this for-loop:
String[] data = split (lines[i], "," );
now you have an array data with the data for that cinema
now you have the lines 43-45: add a point
these lines must also go into the for-loop
and you must check if data is ok or remove [ and ] e.g.
;-)
also you got arrays for all data of all cinemas - good!
so: in line 122-143 you need to for-loop over the arrays or something and check which point has been clicked and the display it.
can't you make an array from ScreenPosition MontagnardPos ?
later you have a class Cinema with objects cinemas in an ArrayList ;-)
And
and use ctrl-t in the processing program to auto-format your code nicely (indents)
here
good evening, I think you have spent a time with the code. :) it's a bit difficult to understand the codes. When I added on processing the code that you give me. It not running Then, I have some questions; Why you write ;
println("\n**************************************************************\n");
println ("end for-loop--------------------------------");
final String quotationMark = "\"";
what is this data[5] and data [6]
Location MontagnardLocation = new Location(data[5], data[6]); //(longitude;lattitude)
It runs.
Also the two printlns are just for debugging, to see if setup() is finished.
I defined "\"" to make it better readable
Ahh okey, I wanted to understand the code. I want to say, when I execute the program too bug. The map moves very slowly and when I move the map, the red points don't move with the map. they remain stable. So the gray spots appear :((
I think that I will not add red arc on gray points. I want just to change the color of gray points. Doing red for example. so I used;
MontagnardMarker.setColor(color(255, 0, 0, 255)); //Couleur des points
:) Thank so much for your helps ..
you mean it's too big and too slow (not too bug)
you wrote:
old version of my code. Forget it.
your setup()
your setup() is very long. The for-loop line is always the same (80,91,102...) and the line after this as well (81,92,103...) - you can have all in one for-loop. It's not too bad since setup() runs only once, other than setup().
your draw()
your draw() is slow because you draw the map each time. It would be cool if you draw the map only once. And then draw the map only when user did pan or zoom it. I am not sure how to do it. Or how to optimize the map otherwise.
this new version now:
when you move the map the cinemas also move.
thanks so much, you're very nice :) :x
thanks!