Googlemaps: retrieve polygon data από text πεδίο στην mysql

Κώδικας, πληροφορίες, ερωτήσεις και απαντήσεις σχετικές με την JavaScript.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

Googlemaps: retrieve polygon data από text πεδίο στην mysql

Δημοσίευση από alou » 27 Νοέμ 2012 23:15

Έχω δυο μέρες που προσπαθώ να καταλάβω τι ακριβώς φταίει οπότε αν υπάρχει καμμία ιδέα...

Σε χάρτη της Ελλάδας, επιλέγεις νομό. Ανάλογα με το select option, γίνεται ένα jquery ajax get και παίρνω τα στοιχεία που χρειάζομαι για να κεντραριστεί και να έρθει στο zoom level που πρέπει ο χάρτης.

Ταυτόχρονα, από ένα text πεδίο στη βάση παίρνω και polygon data για να ορίσω την εκάστοτε περιοχή.

Τα στοιχεία στη βάση ήταν στη μορφή:

Κώδικας: Επιλογή όλων

new google.maps.LatLng(38.05890484918669, 23.11248779296875),
new google.maps.LatLng(38.01564013749379, 23.130340576171875),
new google.maps.LatLng(37.99832709721297, 23.102874755859375),
new google.maps.LatLng(37.97884504049713, 23.1317138671875)
...
αλλά πλέον τα έχω κάπως έτσι, για το λόγο που εξηγώ πιο κάτω (να τα ξανακάνω array μόλις τα πάρω):

Κώδικας: Επιλογή όλων

7.207031,52.504185,0.0 
53.613281,51.63984,0.0 
21.796875,9.657073,0.0 
6.855469,52.182016,0.0
Αυτό φέρνει τα στοιχεία από τη βάση:

Κώδικας: Επιλογή όλων

$.ajax({
        url:'somefile.php',
        type:'GET',
        data: {'nomos': nomos},
        dataType:'json',
        cache:false,
        success:function(data){
		//..diafora...
		$.each(data, function(index, value) {
           $&#40;'<option data-poly="' + value.poly + ...// σε αυτή την εναλλακτική, κάθε option κουβαλάει και τα στοιχεία του polygon
        &#125;&#41;;
		pareMikosPlatos&#40;som vars&#41; //φτιάχνει τον χάρτη 
    &#125;,
        error&#58;function&#40;jxhr&#41;&#123;
        alert&#40;jxhr.responseText&#41;;
    &#125;
    &#125;&#41;; 
Με το παραπάνω, έχει φτιαχτεί ο αρχικός χάρτης και το select με τους νομούς.
Επιλέγοντας ένα νομό, ξαναφτιάχνεται ο χάρτης αλλά παίρνω και το data-poly με τα στοιχεία του polygon για να μπει στο νέο χάρτη.

Κάποια παραδείγματα πως χρησιμοποιείς τις συντεταγμένες για πολύγωνα εδώ (και βέβαια στα guides by fafos εδώ γύρω).
Το πρόβλημα είναι ότι αν φέρεις το string έτοιμο, της μορφής:

Κώδικας: Επιλογή όλων

new google.maps.LatLng&#40;25.774252, -80.190262&#41;,
    new google.maps.LatLng&#40;18.466465, -66.118292&#41;,
    new google.maps.LatLng&#40;32.321384, -64.75737&#41;,
    new google.maps.LatLng&#40;25.774252, -80.190262&#41;

δεν δουλεύει, οπότε υπέθεσα ότι πρέπει να φτιάξω latlng objects σπάζοντας το string και να φτιάξω ξανα ένα array, δηλαδή:

Κώδικας: Επιλογή όλων

shapeCoords = &#91;&#93;;
	breakshape = areashape.split&#40;',0.0'&#41;; //αν δειτε πως είναι αποθηκευμένα στη βάση θα καταλάβετε, τα σπάω αρχικά ανά σημείο
	var breakpts = breakshape.length;
	for &#40;var t=0; t <breakpts; t++&#41; &#123;
		latlongs = breakshape&#91;t&#93;.split&#40;','&#41;; //και μετα παίρνω lat long ξεχωριστά ανά σημείο
		shapeCoords.push&#40;new google.maps.LatLng&#40;latlongs&#91;0&#93;, latlongs&#91;1&#93;&#41;&#41;;	//και κάθε latlong object γίνεται push σε ένα καινούργιο array
	&#125;
  		drawarea = new google.maps.Polygon&#40;&#123;
    		paths&#58; shapeCoords,
    		.....
  		&#125;&#41;;
		
  		drawarea.setMap&#40;map&#41;; //Μπα. τίποτα, χωρίς σφάλμα όμως...
Καμμία ιδέα?

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Googlemaps: retrieve polygon data από text πεδίο στην mysql

Δημοσίευση από fafos » 27 Νοέμ 2012 23:36

exeis kanei kammia dokimh (p.x. me alert) na deis an sou gyrnaei sosta thn array shapeCoords?
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

Googlemaps: retrieve polygon data από text πεδίο στην mysql

Δημοσίευση από alou » 27 Νοέμ 2012 23:56

Ναι console log, alert, mayday ότι θες :D

Έτσι όπως το βλέπεις τώρα, με το text field για δοκιμή έτσι:

Κώδικας: Επιλογή όλων

7.207031,52.504185,0.0 
53.613281,51.63984,0.0 
21.796875,9.657073,0.0 
6.855469,52.182016,0.0
παίρνω

Κώδικας: Επιλογή όλων

&#40;7.207031, 52.50418500000001&#41;,&#40;53.613281, 51.63984000000005&#41;,&#40;21.796875, 9.657072999999968&#41;,&#40;6.855469, 52.182015999999976&#41;
με alert πριν ορίσω το drawarea.

Αν δεν κάνω αυτό με το φτιάξιμο του object για κάθε latlong, με το text πεδίο να είναι

Κώδικας: Επιλογή όλων

&#91;new google.maps.LatLng&#40;38.05890484918669, 23.11248779296875&#41;,
new google.maps.LatLng&#40;38.01564013749379, 23.130340576171875&#41;,
new google.maps.LatLng&#40;37.97234987199525, 23.40362548828125&#41;
...
&#93;
και ορίζοντας απευθείας paths = το παραπάνω string όπως έρχεται, βγάζει js error:

Κώδικας: Επιλογή όλων

Timestamp&#58; 11/27/12 11&#58;59&#58;40 PM
Error&#58; Error&#58; Μη έγκυρη τιμή για την παράμετρο κατασκευαστή 0&#58; new google.maps.LatLng&#40;38.05890484918669, 23.11248779296875&#41;,
new google.maps.LatLng&#40;38.01564013749379, 23.130340576171875&#41;,
...
Source File&#58; http&#58;//maps.gstatic.com/cat_js/intl/el_ALL/mapfiles/api-3/10/17/%7Bmain,drawing%7D.js
Line&#58; 38

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Googlemaps: retrieve polygon data από text πεδίο στην mysql

Δημοσίευση από fafos » 28 Νοέμ 2012 03:45

prospathise auto:

allaxe auto:

Κώδικας: Επιλογή όλων

      shapeCoords.push&#40;new google.maps.LatLng&#40;latlongs&#91;0&#93;, latlongs&#91;1&#93;&#41;&#41;;   //και κάθε latlong object γίνεται push σε ένα καινούργιο array 
me auto:

Κώδικας: Επιλογή όλων

	var pol = new google.maps.LatLng&#40;latlongs&#91;0&#93;,latlongs&#91;1&#93;&#41;;
      shapeCoords.push&#40;pol&#41;;   //και κάθε latlong object γίνεται push σε ένα καινούργιο array
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

Googlemaps: retrieve polygon data από text πεδίο στην mysql

Δημοσίευση από alou » 28 Νοέμ 2012 08:09

Μπα... έκανα κάτι παρόμοιο + άλλες δοκιμές και παίρνω το ίδιο αποτέλεσμα. Τώρα το κομμάτι αυτό είναι:

Κώδικας: Επιλογή όλων

	if &#40;..&#41; &#123; //αν υπαρχουν polygon data
		var drawarea;
		breakshape = areashape.split&#40;',0.0'&#41;;
		var breakpts = breakshape.length;
		var shapeCoords = &#91;&#93;;
		for &#40;var t=0; t < breakpts-1; t++&#41; &#123;
			var latlongs = breakshape&#91;t&#93;.split&#40;','&#41;; 
			var newlat = parseFloat&#40;latlongs&#91;0&#93;&#41;;
			var newlong = parseFloat&#40;latlongs&#91;1&#93;&#41;;
			var newpath = new google.maps.LatLng&#40; newlat, newlong &#41;;
			shapeCoords.push&#40;newpath&#41;;
		&#125;
		alert&#40;shapeCoords&#41;;
  		drawarea = new google.maps.Polygon&#40;&#123;
    		paths&#58; shapeCoords,
    		...
  		&#125;&#41;;
  		drawarea.setMap&#40;map&#41;;
	&#125;
Το alert:

Κώδικας: Επιλογή όλων

&#40;7.207031, 52.50418500000001&#41;,&#40;53.613281, 51.63984000000005&#41;,&#40;21.796875, 9.657072999999968&#41;,&#40;6.855469, 52.182015999999976&#41;

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

Googlemaps: retrieve polygon data από text πεδίο στην mysql

Δημοσίευση από alou » 28 Νοέμ 2012 10:06

ΟΚ μάλλον το array που θα μπούν τα latlng objects πρέπει να οριστεί σαν

Κώδικας: Επιλογή όλων

var shapeCoords = new google.maps.MVCArray&#40;&#41;;
οπότε πειραματίζομαι σε αυτή την κατεύθυνση...

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Googlemaps: retrieve polygon data από text πεδίο στην mysql

Δημοσίευση από fafos » 28 Νοέμ 2012 15:40

alou έγραψε:ΟΚ μάλλον το array που θα μπούν τα latlng objects πρέπει να οριστεί σαν

Κώδικας: Επιλογή όλων

var shapeCoords = new google.maps.MVCArray&#40;&#41;;
οπότε πειραματίζομαι σε αυτή την κατεύθυνση...
To MVCArray() to xrhsimopoioume otan exoume polles arrays ston idio xarth... an exeis pano apo 1 array prepei na to xrhsimopoihseis... kai proteino na xrhsimopoihseis kai to bounds gia na mhn psaxnetai o xrhsths ston xarth kai esy na mhn xreiazetai na dhmiourgeis neo center gia kathe xarth..
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

Googlemaps: retrieve polygon data από text πεδίο στην mysql

Δημοσίευση από alou » 28 Νοέμ 2012 17:21

Ναι, στα αρχικά πειράματα ήταν ένα αλλά τελικά θα υπάρχουν πολλά οπότε χρειάζεται.

Το θέμα λύθηκε αλλά έχει αλλάξει πολύ η δομή για να το περιγράψω, δεν ξέρω για ποιο ακριβώς λόγο πάντως δεν δούλευε όπως ήταν αρχικά.

Πιθανώς να έκανα βλακεία εκείνη την ώρα με κάποιο ασύγχρονο request που δεν είχε τελειώσει πριν δηλωθεί το polygon... (το πιο πιθανό αυτό είναι γιατί δεν είχα σφάλμα).

Είναι η πρώτη φορά που ασχολούμαι λίγο σοβαρά με αυτο το api και έχει πλάκα πάντως...

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

Googlemaps: retrieve polygon data από text πεδίο στην mysql

Δημοσίευση από alou » 28 Νοέμ 2012 19:18

Έχει κανείς υπόψιν αν / τι περιορισμός υπάρχει στην ταυτόχρονη απεικόνιση polygons? κάτι πήρε το μάτι μου για 1000 αλλά δεν είναι ξεκάθαρο και κάποιες εναλλακτικές με περισσότερα layers που θέλουν ψάξιμο... αν το έχει σκαλίσει κανείς και ξέρει θα το εκτιμούσα, να ξέρουμε με τι προοπτικές μπορεί να φτιαχτεί κάτι.

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Googlemaps: retrieve polygon data από text πεδίο στην mysql

Δημοσίευση από fafos » 28 Νοέμ 2012 19:59

den exo dei kapoio idiaitero limit gia ta polygons-overlays ektos tou oti kathe polygon den prepei na exei pano apo 100 points (den vazo to xeri sthn fotia).. ta genika limits einai 2.500 requests gia to geocoding, 2.500 gia emfanish xarton me custom style kai 25.000 requests gia olous tous allous xartes (ana hmera).. yparxoun kai kapoia oria gia requests ana deuterolepto ta opoia den thymamai alla apoti thymamai einai dyskolo na ta ypervoun mikromesaies istoselides (se episkepseis)
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

Googlemaps: retrieve polygon data από text πεδίο στην mysql

Δημοσίευση από alou » 29 Νοέμ 2012 00:08

Thanks, πολύ χρήσιμα στοιχεία :D
Κάποια πολύγωνα πάντως τα ορίζω με πάνω από 100 σημεία, τώρα αν κάνει drop κάποια - και με ποια λογική - ψάξε βρες.

Ψάχνοντας είδα και αυτό, που φτιάχνει χάρτες από fusiontables και έχει μερικά layers για τα πολύγωνα
http://www.google.com/fusiontables/publ ... _demo.html

Έχει ψωμί όσο το σκαλίζεις πάντως.

Άβαταρ μέλους
mrpc
WebDev Moderator
Δημοσιεύσεις: 3393
Εγγραφή: 03 Μάιος 2000 03:00
Τοποθεσία: Εξάρχεια
Επικοινωνία:

Googlemaps: retrieve polygon data από text πεδίο στην mysql

Δημοσίευση από mrpc » 29 Νοέμ 2012 13:00

Καλά όλα αυτά, αλλά τι σχέση έχουν με την PHP;
Ο πιο γρήγορος τρόπος να παίρνουμε απάντηση στις ερωτήσεις μας είναι να δημοσιεύουμε στη πιο σχετική περιοχή.
Σου μεταφέρω το θέμα στη javascript.

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

Googlemaps: retrieve polygon data από text πεδίο στην mysql

Δημοσίευση από alou » 29 Νοέμ 2012 13:34

mrpc έγραψε: Καλά όλα αυτά, αλλά τι σχέση έχουν με την PHP;
Ο πιο γρήγορος τρόπος να παίρνουμε απάντηση στις ερωτήσεις μας είναι να δημοσιεύουμε στη πιο σχετική περιοχή.
Σου μεταφέρω το θέμα στη javascript.
Ναι sorry, έχει php το θέμα μεν αλλά τα κομμάτια που δημοσίευσα δεν.

Απάντηση

Επιστροφή στο “JavaScript και Frameworks”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης