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, 10: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, 13: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, 23: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, 01: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 02:16 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 09-05-2013, 09: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, 10:00
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.604
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 10:06 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 09-05-2013, 11: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, 12: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, 21: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 21: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 20:58
Formular absenden, Leerzeilen und Leerzeichen??? goodrun PHP Developer Forum 5 13-05-2005 20:30
Leerzeilen ProfOli PHP Developer Forum 3 30-08-2004 01:08
Problem mit Csv-export in phpmyadmin und Csv-import in Excel Bazi00 Off-Topic Diskussionen 4 05-08-2004 16:18
html in csv oder txt importieren und zusammenfassen und es einer mysql datenbank ... flo SQL / Datenbanken 3 27-04-2002 14: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

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

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


 

Aktuelle PHP Scripte

HeidiSQL - kostenloses MySQL front-end Editor für Windows ansehen HeidiSQL - kostenloses MySQL front-end Editor für Windows

HeidiSQL - ist ein Windows-Editor für die bekannt open Source Datenbank mySQL

10.12.2018 Berni | Kategorie: MYSQL/ Management
piwik Open-Source Webanalyse-Software ansehen piwik Open-Source Webanalyse-Software

piwik ist eine gute Alternative zu Google Analytics. Viele Features und ein modernes Erscheinungsbild mit aussagefähigen Statistiken in Echtzeit

10.12.2018 phpler | Kategorie: PHP/ Besucherzaehler
jQuery Mobile ansehen jQuery Mobile

Touch-Optimized Web Framework für Smartphones & Tablets

09.12.2018 phpler | Kategorie: AJAX/ Framework
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:12 Uhr.