php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 08-05-2013, 09:18
Ghostrider28
 Registrierter Benutzer
Links : Onlinestatus : Ghostrider28 ist offline
Registriert seit: May 2010
Beiträge: 111
Ghostrider28 befindet sich auf einem aufstrebenden Ast
Standard CSV und Leerzeilen

Hallo,

ich stehe vor folgendem Problem.

Ich erzeuge für Google Maps einen Linestring, um diesen auf der Karte darzustellen.

PHP-Code:
var points = [
                    <?php foreach ($shape->points() as $k => $point) {  ?>
                        <?php if ($k 0) {  ?>,<?php ?>
                        new google.maps.LatLng(<?php echo $point->lat ?><?php echo $point->lng ?>)
                    <?php ?>
                ];
Hierzu:

PHP-Code:
$fp fopen('myShapes.php''r');
 
    
$shape = new Shape();
 
    
$i 0;
    while ((
$row fgetcsv($fp))) {
        if (
$i == 0) {
            
// csv header row
        
}
        else {
        if(
$row != ""){
        
$shape->addPoint(new ShapePoint($row[1], $row[2], $i));
        }
            
        }
 
        
$i++;
    }
 
    
fclose($fp); 
Aufbau der myShapes.php

PHP-Code:
<?php
//TEST
$string =  '27779,-33.3240789844364,115.638325287067,1,0
27779,-33.3240755555556,115.638360555556,2,3.31
27779,-33.3240722222222,115.638396666667,3,6.69
27779,-33.3240783333333,115.638419444444,4,8.91
27779,-33.3246238888889,115.638753333333,5,76.93
27779,-33.3246716666667,115.638813888889,6,84.66
27779,-33.3247216666667,115.638857777778,7,91.55
27779,-33.3247783333333,115.638908333333,8,99.4
27779,-33.3248188888889,115.638933333333,9,104.46
27779,-33.3248483333333,115.638941666667,10,107.82
27779,-33.3248366666667,115.63901,11,114.31
27779,-33.3246905555556,115.639496666667,12,162.43
27779,-33.3244577777778,115.639959444444,13,212.65
27779,-33.3243933333333,115.640034444444,14,222.64
27779,-33.3247722222222,115.64049,15,282.33
27779,-33.3250116666667,115.640761666667,16,319
27779,-33.3252088888889,115.640923888889,17,345.58
27779,-33.3254516666667,115.641070555556,18,375.76
27779,-33.3258016666667,115.641201666667,19,416.45
27779,-33.3260861111111,115.641242777778,20,448.22
27779,-33.3262483333333,115.641245555556,21,466.21
27779,-33.3264027777778,115.641217777778,22,483.53
27779,-33.3266022222222,115.64116,23,506.29
27779,-33.3267394444444,115.641115555556,24,522.06
27779,-33.3271016666667,115.640994444444,25,563.78
27779,-33.32748,115.640953888889,26,605.9
27779,-33.3278433333333,115.640965,27,646.2
27779,-33.3278988888889,115.640971666667,28,652.39'

echo 
$string;
?>
Allerdings erzeugen die Leerzeilen (Sie // zweite Zeile) einen Fehler, siehe Ausgabe:


var points = [ new google.maps.LatLng(, ) , new google.maps.LatLng(-33.3240789844364, 115.638325287067) , new google.maps.LatLng(-33.3240755555556, 115.638360555556) , new google.maps.LatLng(-33.3240722222222, 115.638396666667) , new google.maps.LatLng(-33.3240783333333, 115.638419444444) , new google.maps.LatLng(-33.3246238888889, 115.638753333333) , new google.maps.LatLng(-33.3246716666667, 115.638813888889) , new google.maps.LatLng(-33.3247216666667, 115.638857777778) , new google.maps.LatLng(-33.3247783333333, 115.638908333333) , new google.maps.LatLng(-33.3248188888889, 115.638933333333) , new google.maps.LatLng(-33.3248483333333, 115.638941666667) , new google.maps.LatLng(-33.3248366666667, 115.63901) , new google.maps.LatLng(-33.3246905555556, 115.639496666667) , new google.maps.LatLng(-33.3244577777778, 115.639959444444) , new google.maps.LatLng(-33.3243933333333, 115.640034444444) , new google.maps.LatLng(-33.3247722222222, 115.64049) , new google.maps.LatLng(-33.3250116666667, 115.640761666667) , new google.maps.LatLng(-33.3252088888889, 115.640923888889) , new google.maps.LatLng(-33.3254516666667, 115.641070555556) , new google.maps.LatLng(-33.3258016666667, 115.641201666667) , new google.maps.LatLng(-33.3260861111111, 115.641242777778) , new google.maps.LatLng(-33.3262483333333, 115.641245555556) , new google.maps.LatLng(-33.3264027777778, 115.641217777778) , new google.maps.LatLng(-33.3266022222222, 115.64116) , new google.maps.LatLng(-33.3267394444444, 115.641115555556) , new google.maps.LatLng(-33.3271016666667, 115.640994444444) , new google.maps.LatLng(-33.32748, 115.640953888889) , new google.maps.LatLng(-33.3278433333333, 115.640965) , new google.maps.LatLng(-33.3278988888889, 115.640971666667) , new google.maps.LatLng(, ) , new google.maps.LatLng(, ) ];


Jede Leerzeile in der myShapes.php wirft also ein new google.maps.LatLng(, )

Nun habe ich schon versucht, die Leerzeilen anhand str_replace(CHR(10) sowie CHR(13) zu entfernen, aber ohne Ergebnis.

Hat jemand einen Tip, wie ich dennoch oben genannte Datei myShapes.php erzeugen kann, und dabei die Leerzeilen später beim Import heraus filtere?

Danke im Voraus
Ghostrider
Mit Zitat antworten
  #2 (permalink)  
Alt 08-05-2013, 12:19
Melewo
 Registrierter Benutzer
Links : Onlinestatus : Melewo ist offline
Registriert seit: Jan 2013
Beiträge: 365
Melewo befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Ghostrider28 Beitrag anzeigen
Nun habe ich schon versucht, die Leerzeilen anhand str_replace(CHR(10) sowie CHR(13) zu entfernen, aber ohne Ergebnis.
CHR ist für ASCII-Code und wenn ich mir die ASCII-Tabelle ansehe, dann blicke ich da erst einmal nicht durch und weiß nicht so richtig, ob Du das erreichst, was Du vorhast. Nehme doch statt str_replace einfach preg_replace, sollte doch einfacher sein.
Mit Zitat antworten
  #3 (permalink)  
Alt 08-05-2013, 22:17
Ghostrider28
 Registrierter Benutzer
Links : Onlinestatus : Ghostrider28 ist offline
Registriert seit: May 2010
Beiträge: 111
Ghostrider28 befindet sich auf einem aufstrebenden Ast
Standard

Spielt das in diesem Zusammenhang überhaupt eine Rolle, ob ich str_replace oder preg_replace verwende?
Mit Zitat antworten
  #4 (permalink)  
Alt 09-05-2013, 00:44
Melewo
 Registrierter Benutzer
Links : Onlinestatus : Melewo ist offline
Registriert seit: Jan 2013
Beiträge: 365
Melewo befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Ghostrider28 Beitrag anzeigen
Allerdings erzeugen die Leerzeilen (Sie // zweite Zeile) einen Fehler, siehe Ausgabe:
Wenn ich ehrlich bin, ich verstehe sowieso nichts, soll heißen, was soll in (Sie // zweite Zeile) zu sehen sein und was soll mit str_replace entfernt werden?

Nur mit str_replace(CHR(10) und CHR(13) kannst Du einzelne Zeichen entfernen und keine Zeilen. Doch welche Zeichen möchtest Du woraus entfernen? Mit 10 und 13 \n\r bzw. LF und CR für Zeilenumbruch und Wagenrücklauf. Und wofür, damit die letzte Ziffer der vorausgehenden Zeile mit der ersten Ziffer der nächsten Zeile verbunden wird? Wenn hingegen ganze Zeilen entfernt werden sollen, dann schreib einen passenden Ausdruck als Muster und verwende preg_replace.

Geändert von Melewo (09-05-2013 um 01:16 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 09-05-2013, 08:48
UzumakiNaruto
 Registrierter Benutzer
Links : Onlinestatus : UzumakiNaruto ist offline
Registriert seit: Nov 2004
Beiträge: 642
UzumakiNaruto befindet sich auf einem aufstrebenden Ast
Standard

er will einfach den zeilenumbruch weg haben damit sein anderes script einen langen string baut und das script nicht bei einer neuen zeile die schleife von vorne anfängt.
__________________
Gruß
Uzu

private Homepage
Mit Zitat antworten
  #6 (permalink)  
Alt 09-05-2013, 09:00
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.589
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Dann sollte er ein vernünftiges Datenobjekt (JSON) bauen und die Schleife in JavaScript realisieren und nicht in PHP. Lass nicht den Berg zum Propheten kommen, sondern schick den Prophet zum Berg.

PHP-Code:
$points = array();

foreach (
$shape->points() as $point) {
    
$points[] = array('lat' => $point->lat'lng' => $point->lng);

PHP-Code:
var points = <?php echo json_encode($points); ?>;
var googlePoints = [];

for (var point in points) {
    googlePoints.push(new google.maps.LatLng(point.lat, point.lng));
}

Geändert von h3ll (09-05-2013 um 09:06 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 09-05-2013, 10:19
Melewo
 Registrierter Benutzer
Links : Onlinestatus : Melewo ist offline
Registriert seit: Jan 2013
Beiträge: 365
Melewo befindet sich auf einem aufstrebenden Ast
Standard

Habe mir mal von Google ein funktionierendes Beispiel für Linien geborgt. Mit dem was da bei var points steht, da erhalte ich keine Linie, auch nicht wenn ich die leeren new google.maps.LatLng(, ) entferne. Nun ja, da müsste man sich wohl erst einmal richtig einarbeiten, um das besser zu verstehen, doch danach ist mir auch nicht gerade zumute. So funktioniert es zumindest.

HTML-Code:
<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <title>Simple Polylines</title>
    <link href="https://developers.google.com/maps/documentation/javascript/examples/default.css" rel="stylesheet">
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
    <script>
function initialize() {
  var myLatLng = new google.maps.LatLng(0, -180);
  var mapOptions = {
    zoom: 3,
    center: myLatLng,
    mapTypeId: google.maps.MapTypeId.TERRAIN
  };

  var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);

  var flightPlanCoordinates = [
      new google.maps.LatLng(37.772323, -122.214897),
      new google.maps.LatLng(21.291982, -157.821856),
      new google.maps.LatLng(-18.142599, 178.431),
      new google.maps.LatLng(-27.46758, 153.027892)
  ];
  var flightPath = new google.maps.Polyline({
    path: flightPlanCoordinates,
    strokeColor: '#FF0000',
    strokeOpacity: 1.0,
    strokeWeight: 2
  });

  flightPath.setMap(map);
}

google.maps.event.addDomListener(window, 'load', initialize);

    </script>
  </head>
  <body>
    <div id="map-canvas"></div>
    <!-- Quelle: https://developers.google.com/maps/documentation/javascript/examples/polyline-simple?hl=de -->
  </body>
</html>
Mit Zitat antworten
  #8 (permalink)  
Alt 09-05-2013, 11:33
Melewo
 Registrierter Benutzer
Links : Onlinestatus : Melewo ist offline
Registriert seit: Jan 2013
Beiträge: 365
Melewo befindet sich auf einem aufstrebenden Ast
Standard

Habe es halbwegs begriffen, die Strecke war nur zu kurz, um die bei der Zoomstufe zu erkennen, doch jetzt funktioniert es auch mit diesen Werten.

HTML-Code:
<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <title>Simple Polylines</title>
    <link href="https://developers.google.com/maps/documentation/javascript/examples/default.css" rel="stylesheet">
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
    <script>
function initialize() {
  var myLatLng = new google.maps.LatLng(-33.3240789844364, 115.638325287067);
  var mapOptions = {
    zoom: 16,
    center: myLatLng,
    mapTypeId: google.maps.MapTypeId.TERRAIN 
  };

  var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);

  var flightPlanCoordinates = [
  
    new google.maps.LatLng(-33.3240789844364, 115.638325287067),
    new google.maps.LatLng(-33.3240755555556, 115.638360555556),
    new google.maps.LatLng(-33.3240722222222, 115.638396666667),
    new google.maps.LatLng(-33.3240783333333, 115.638419444444),
    new google.maps.LatLng(-33.3246238888889, 115.638753333333),
    new google.maps.LatLng(-33.3246716666667, 115.638813888889),
    new google.maps.LatLng(-33.3247216666667, 115.638857777778),
    new google.maps.LatLng(-33.3247783333333, 115.638908333333),
    new google.maps.LatLng(-33.3248188888889, 115.638933333333),
    new google.maps.LatLng(-33.3248483333333, 115.638941666667),
    new google.maps.LatLng(-33.3248366666667, 115.63901),
    new google.maps.LatLng(-33.3246905555556, 115.639496666667),
    new google.maps.LatLng(-33.3244577777778, 115.639959444444),
    new google.maps.LatLng(-33.3243933333333, 115.640034444444),
    new google.maps.LatLng(-33.3247722222222, 115.64049),
    new google.maps.LatLng(-33.3250116666667, 115.640761666667),
    new google.maps.LatLng(-33.3252088888889, 115.640923888889),
    new google.maps.LatLng(-33.3254516666667, 115.641070555556),
    new google.maps.LatLng(-33.3258016666667, 115.641201666667),
    new google.maps.LatLng(-33.3260861111111, 115.641242777778),
    new google.maps.LatLng(-33.3262483333333, 115.641245555556),
    new google.maps.LatLng(-33.3264027777778, 115.641217777778),
    new google.maps.LatLng(-33.3266022222222, 115.64116),
    new google.maps.LatLng(-33.3267394444444, 115.641115555556),
    new google.maps.LatLng(-33.3271016666667, 115.640994444444),
    new google.maps.LatLng(-33.32748, 115.640953888889),
    new google.maps.LatLng(-33.3278433333333, 115.640965),
    new google.maps.LatLng(-33.3278988888889, 115.640971666667) 
  ];
  var flightPath = new google.maps.Polyline({
    path: flightPlanCoordinates,
    strokeColor: '#FF0000',
    strokeOpacity: 1.0,
    strokeWeight: 2
  });

  flightPath.setMap(map);
}

google.maps.event.addDomListener(window, 'load', initialize);

    </script>
  </head>
  <body>
    <div id="map-canvas"></div>
    <!-- Quelle: https://developers.google.com/maps/documentation/javascript/examples/polyline-simple?hl=de -->
  </body>
</html>
Mit Zitat antworten
  #9 (permalink)  
Alt 09-05-2013, 20:14
Melewo
 Registrierter Benutzer
Links : Onlinestatus : Melewo ist offline
Registriert seit: Jan 2013
Beiträge: 365
Melewo befindet sich auf einem aufstrebenden Ast
Standard

Ich nehme mal an, dass die Daten aus dieser Quelle stammen:

http://www.phpriot.com/articles/redu...les/shapes.txt

Die kannst Du entweder direkt einlesen, wie im Beispiel weiter unten oder aber Du gibst die 5 Dollar für das Zip-Archiv aus, um dann alles komplett zu haben. Oder hast du da alle Dateien auch so gefunden?

Page 5: A Working Example Using Google Maps - Reducing a Map Path Using Douglas-Peucker Algorithm - PHP articles, tutorials and screencasts - PHP 5, MySQL, PostgreSQL, AJAX, Web 2.0

Leichter wäre die Antwort gefallen, wenn Du gleich geschrieben hättest, wo Code und Daten kopiert wurden.
Soll nur ein Beispiel sein, wie es zur Not auch ginge:

PHP-Code:
<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <title>Simple Polylines</title>
    <link href="https://developers.google.com/maps/documentation/javascript/examples/default.css" rel="stylesheet">
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&amp;sensor=false"></script>
    <script>

var flightPlanCoordinates = [
<?php

    $file 
"shapes.txt";
    
$i 0;

    if ((
$handle fopen($file"r")) !== false) {

        while ((
$data fgetcsv($handle0",")) !== false) {

            if (
$i != 0) {
                echo 
"\tnew google.maps.LatLng(".htmlspecialchars($data[1]).",".htmlspecialchars($data[2])."),\n";
            }
            if (
$i == 1) {
                
$startpunkt $data[1].",".$data[2];
            }
            
$i++;
        }
        
fclose($handle);
    }
?>  ];

function initialize() {
  var myLatLng = new google.maps.LatLng(<?php echo htmlspecialchars($startpunkt?>);
  var mapOptions = {
    zoom: 14,
    center: myLatLng,
    mapTypeId: google.maps.MapTypeId.TERRAIN
  };

  var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);

  var flightPath = new google.maps.Polyline({
    path: flightPlanCoordinates,
    strokeColor: '#FF0000',
    strokeOpacity: 1.0,
    strokeWeight: 2
  });

  flightPath.setMap(map);
}

google.maps.event.addDomListener(window, 'load', initialize);

    </script>
  </head>
  <body>
    <div id="map-canvas"></div>
    <!--
    Quelle HTML und JavaScript:
    https://developers.google.com/maps/documentation/javascript/examples/polyline-simple?hl=de
    Quelle shapes.txt:
    http://www.phpriot.com/articles/reducing-map-path-douglas-peucker-algorithm/files/shapes.txt
    -->
  </body>
</html>

Geändert von Melewo (09-05-2013 um 20:16 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
TextBox und Leerzeilen Membari$ PHP Developer Forum 6 29-06-2005 19:58
Formular absenden, Leerzeilen und Leerzeichen??? goodrun PHP Developer Forum 5 13-05-2005 19:30
Leerzeilen ProfOli PHP Developer Forum 3 30-08-2004 00:08
Problem mit Csv-export in phpmyadmin und Csv-import in Excel Bazi00 Off-Topic Diskussionen 4 05-08-2004 15:18
html in csv oder txt importieren und zusammenfassen und es einer mysql datenbank ... flo SQL / Datenbanken 3 27-04-2002 13:56

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script ansehen ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script

Mit unserer Lösungen können Sie nahezu jeden B2B / B2C Marktplatz betreiben den Sie sich vorstellen können. Ganz egal ob Sie einen Automarktplatz, Immobilenportal oder einfach einen Anzeigenmarkt betreiben möchten. Mit ebiz-trader können Sie Ihre Anforder

11.10.2018 Berni | Kategorie: PHP/ Anzeigenmarkt
PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:23 Uhr.