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 25-01-2008, 23:19
Mathis
 Registrierter Benutzer
Links : Onlinestatus : Mathis ist offline
Registriert seit: Nov 2006
Beiträge: 119
Mathis ist zur Zeit noch ein unbeschriebenes Blatt
Angry Problem mit Geocode-Service von Google

Hallo!

Ich versuche gerade ein Script zu schreiben, das die vollständigen Adressdaten (Ort,PLZ etc.) anhand einer eingegeben Staße und Hausnummer ermittelt. Dazu verwende ich den Geocode-Service von Google (Google Maps API).

Folgende Funktion soll diese Adressdaten ermitteln:
PHP-Code:
function DoGoogleRequest ()
{
    global 
$key$googleurl$str$hnr;
    
$url $googleurl '?output=xml&key=' $key '&q=';
    if (!empty(
$str)) {
        
$url .= urlencode($str) . '+';
    }
    if (!empty(
$hnr)) {
        
$url .= urlencode($hnr);
    }
    
$page = @file_get_contents($url);
    try {
        
$xml = @new SimpleXMLElement ($page);
    }
    catch (
Exception $e) {
        return 
false;
    }
    if (
get_class($xml)=='SimpleXMLElement') {
        return 
$xml
    }
    else {
        return 
false;
    }

In der Globalen $key steht der Key, der benötigt wird, um die Google-Maps-Api verwenden zu können. In $googleurl steht 'http://maps.google.com/maps/geo', in $str die zu suchende Straße und in $hnr die entsprechende Hausnummer.
Das funktioniert auch schon ganz wunderbar. Nur eben leider nicht bei allen Adressen. Setze ich beispielsweise $str='Wilhemsruher Damm' und $hnr=168 so wird alles richtig zurück gegeben. Nehme ich $str='Olwenstraße' und $hnr=2 so funktioniert es nicht. Lasse ich mir aber für diesen Fall die Variable $url vor dem Aufruf mit @file_get_contents() ausgeben, kopiere die in meinen Browser und drücke Enter, so erscheint das gewünschte Ergebnis. Lasse ich mir die Rückgabe von @file_get_contents() in diesem Beispiel ausgeben, so erkenne ich, dass Google die Adresse offensichtlich nicht findet (code=602).

Ich bin echt am Verzweifeln, weil ich keine Ahnung mehr habe, woran das liegen könnte und würd mich daher echt über nen Tipp freuen!

Gruß
Mathis

Geändert von Mathis (26-01-2008 um 11:13 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 26-01-2008, 10:46
dani_o
 PHP Senior
Links : Onlinestatus : dani_o ist offline
Registriert seit: Jun 2003
Ort: Lichtenstein/Sa.
Beiträge: 1.599
dani_o befindet sich auf einem aufstrebenden Ast
Standard

vielleicht könnte es daran liegen das die diese hasunummer nicht gelistet haben?
__________________
Signatur-Text ...
Mit Zitat antworten
  #3 (permalink)  
Alt 26-01-2008, 11:12
Mathis
 Registrierter Benutzer
Links : Onlinestatus : Mathis ist offline
Registriert seit: Nov 2006
Beiträge: 119
Mathis ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Eigentlich nicht, da es ja funktioniert, wenn ich die URL, die mein Script generiert vor dem file_get_contents() abfange (ausgeben lasse) und einfach in den Browser kopiere...
Mit Zitat antworten
  #4 (permalink)  
Alt 26-01-2008, 11:27
Mathis
 Registrierter Benutzer
Links : Onlinestatus : Mathis ist offline
Registriert seit: Nov 2006
Beiträge: 119
Mathis ist zur Zeit noch ein unbeschriebenes Blatt
Standard

OK, jetzt bin ich völlig am Verzweifeln! Ich habe jetzt einfach mal folgendes Script laufen lassen:

PHP-Code:
$url 'http://maps.google.com/maps/geo?q=Olwenstra%DFe%202
&key=ABQIAAAAT1meRREuwrSVllzytK6lTBSlpozHAAsnZweSkaVxx
DrUpxKhNhSnY1nm_8mlrAhwsAYluCilVnBx6w&output=xml'
;
echo (
file_get_contents($url)); 
Die verwendete URL habe ich original aus der Adresszeile meines Browsers kopiert. Im Browser bekomme ich eine vollständige Geocode-Ausgabe. Dieses Script gibt nur

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.0">
<Response>
<name>Olwenstra�e 2</name>
<Status>
<code>602</code>
<request>geocode</request>
</Status>
</Response>
</kml>

zurück (code=602) bedeutet nicht gefunden. Mich wundert unter anderem auch, dass das 'ß' aus 'straße' durch ein '�' ersetzt wird. Irgendwie habe ich mittlerweile das Gefühl, dass php mit url-encodierten Sonderzeichen nicht klar kommt... Oder die Funktion file_get_contents wandelt die URL noch irgendwie wieder um. Ich bräuchte als ne Funktion, die quasie dasselbe macht, wie ein Browser, ohne die URL noch irgendwie zu bearbeiten! Hat da jemand nen Tipp??

Geändert von Mathis (26-01-2008 um 11:36 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 26-01-2008, 12:03
hhcm
 PHP Senior
Links : Onlinestatus : hhcm ist offline
Registriert seit: Jun 2005
Ort: Viersen, NRW
Beiträge: 1.833
hhcm ist zur Zeit noch ein unbeschriebenes Blatt
hhcm eine Nachricht über ICQ schicken hhcm eine Nachricht über Skype™ schicken
Standard

Du musst die Anfrage UTF-8 kodieren.
__________________
gruss Chris

Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."
Mit Zitat antworten
  #6 (permalink)  
Alt 26-01-2008, 12:42
Mathis
 Registrierter Benutzer
Links : Onlinestatus : Mathis ist offline
Registriert seit: Nov 2006
Beiträge: 119
Mathis ist zur Zeit noch ein unbeschriebenes Blatt
Standard

PHP-Code:
$url 'http://maps.google.com/maps/geo?q=Olwenstra%DFe%202
&key=ABQIAAAAT1meRREuwrSVllzytK6lTBSlpozHAAsnZweSkaVxxDr
UpxKhNhSnY1nm_8mlrAhwsAYluCilVnBx6w&output=xml'
;
$url utf8_encode($url);
echo (
file_get_contents($url)); 
Resultat: Problem bleibt !

Geändert von Mathis (26-01-2008 um 13:41 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 26-01-2008, 13:34
pekka
 PHP Master
Links : Onlinestatus : pekka ist offline
Registriert seit: Jun 2001
Ort: Köln
Beiträge: 6.608
pekka befindet sich auf einem aufstrebenden Ast
Standard

Bevor du mit der Fehlersuche anfängst, solltest du noch Ort und Land in die Query setzen, oder?
Mit Zitat antworten
  #8 (permalink)  
Alt 26-01-2008, 13:40
Mathis
 Registrierter Benutzer
Links : Onlinestatus : Mathis ist offline
Registriert seit: Nov 2006
Beiträge: 119
Mathis ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Nein, brauch ich eigentlich nicht. Er gibt, wenn die angegebene Straße mehrmals existiert, einfach alle Möglichkeiten zurück.
Ich möchte es nur einfach erstmal hinbekommen, dass er mir auch bei einer Query mit Sonderzeichen was vernünftiges zurück gibt und nicht nen Fehlercode ausgibt, der meiner Meinung nach darauf beruht, dass eben die Sonderzeichen bei ihm nicht richtig ankommen.
Denn wie schon gesagt: Wenn ich im Browser eingebe: [...]&q=Olwenstraße 2, dann bekomme ich ein ordentliches Ergebnis. Nur mit PHP bekomme ich das noch nicht hin !
Mit Zitat antworten
  #9 (permalink)  
Alt 26-01-2008, 19:18
hhcm
 PHP Senior
Links : Onlinestatus : hhcm ist offline
Registriert seit: Jun 2005
Ort: Viersen, NRW
Beiträge: 1.833
hhcm ist zur Zeit noch ein unbeschriebenes Blatt
hhcm eine Nachricht über ICQ schicken hhcm eine Nachricht über Skype™ schicken
Standard

Zitat:
Olwenstra%DFe%202
DAS brauchst du nicht UTF8 Kodieren :P
__________________
gruss Chris

Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."
Mit Zitat antworten
  #10 (permalink)  
Alt 04-02-2008, 18:13
peterdoo
 Newbie
Links : Onlinestatus : peterdoo ist offline
Registriert seit: Feb 2008
Beiträge: 5
peterdoo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo!
Ich habe dasselbe Problem.
Bei mir hat aber auch diese Schreibweise nicht geholfen:
Zitat:
Original geschrieben von hhcm
DAS brauchst du nicht UTF8 Kodieren :P
Olwenstra%DFe%202
Bei dir etwa Mathis???

Alle Adressen mit Umlauten oder einem ß (sz) werden mit dem Fehlercode 602 zurückgewiesen. Wenn ich diese Adressen jedoch direkt über den Browser eingebe, sind sie alle auffindbar.

Ich bin echt am Verzweifeln!
Würde mich über Eure Hilfe freuen.....

Gruß
Peter
Mit Zitat antworten
  #11 (permalink)  
Alt 04-02-2008, 18:17
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Dann vergleich doch einfach mal mit dem gesendeten Header im Browser...

Hast du deine Anfrage vernünftig kodiert?
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #12 (permalink)  
Alt 07-02-2008, 10:57
peterdoo
 Newbie
Links : Onlinestatus : peterdoo ist offline
Registriert seit: Feb 2008
Beiträge: 5
peterdoo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Danke für deine Antwort!
PHP-Code:
$address $street.' '.$hnr.' '.$zip.' '.$city.' Germany';
$address_encoded urlencode($address_encoded);

$base_url "http://" MAPS_HOST "/maps/geo?output=xml" "&key=" KEY;
$request_url $base_url "&q=" $address_encoded
MAPS_HOST und KEY habe ich zuvor definiert.

Dieser Code funktioniert auch soweit ganz gut, dass er sich die Geokoordinaten zu allen Adressen holen kann, welche nicht das Wort "straße" oder Umlaute etc. enthalten.

Als Beispiel gebe ich hier einfach mal diese Adresse an:
Hafenstraße 140 20309 Hamburg
Die generierte Anfrage dafür lautet:
Code:
http://maps.google.com/maps/geo?output=xml&key=MEINKEY&q=Hafenstra%DFe+140+20309+Hamburg+Germany
Ohne urlencoding sieht es natürlich so aus:
Code:
http://maps.google.com/maps/geo?output=xml&key=MEINKEY&q=Hafenstraße 140 20309 Hamburg Germany
Aber dies funktioniert auch nicht.
Lediglich, wenn ich diese Zeile in den Browser kopiere, habe ich Zugriff auf die XML-Daten von Google.

Wenn jemand diese Adresse per Code geocoden kann, bitte lasst es mich wissen!
Mit Zitat antworten
  #13 (permalink)  
Alt 07-02-2008, 11:46
Malaga
 Newbie
Links : Onlinestatus : Malaga ist offline
Registriert seit: May 2003
Beiträge: 78
Malaga ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi,

wenn du dich als Browser ausgibst dann gehts.

PHP-Code:

$_browser 
= new browser();
$_browser->user_agent="Mozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.7.6) Gecko/20050309 Firefox/1.0.1";
$_browser->language="de-de,de;q=0.5";
$_browser->charset="ISO-8859-1,utf-8;q=0.7,*;q=0.7";
$_browser->accept="text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
$_site $_browser->site("http://maps.google.com/maps/geo?q=20309+Hafenstraße+140&key=AB...w&output=xml");
$_site->get();
print 
$_site->get_content(); 
Ergebnis:

20309 Hafenstraße 140200geocodeHafenstraße 140, 27576 Bremerhaven, GermanyDEBremenBremerhavenBremerhavenHafenstraße 140275768.585871,53.559532,0Hafenstraße 140, 45356 Vogelheim, Essen, GermanyDENordrhein-WestfalenEssenEssenVogelheimHafenstraße 140453566.980397,51.490424,0Hafenstraße 140, 59067 Hamm, GermanyDENordrhein-WestfalenHammHammHafenstraße 140590677.767900,51.675784,0Hafenstrasse 140, 5224 Hafen, Linn, SwitzerlandCHAargauBruggLinnHafenHafenstrasse 14052248.171434,47.483818,0Hafenstraße 140, 12357 Rudow, Berlin, GermanyDEBerlinBerlinBerlinRudowHafenstraße 1401235713.507248,52.427926,0

Es ist sicher noch nicht das optimale Ergebnis, aber vielleicht hilft es dir weiter.
Mit Zitat antworten
  #14 (permalink)  
Alt 13-02-2008, 21:33
peterdoo
 Newbie
Links : Onlinestatus : peterdoo ist offline
Registriert seit: Feb 2008
Beiträge: 5
peterdoo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

danke für deine mühe malaga!

ich habe es auf deine weise probiert mich als browser auszugeben.
habe dafür die "Simple HTTP browser" class verwendet.
anstatt xml daten, liefert mir der post aber die google maps startseite!

PHP-Code:
include "test_http.lib.php";
$Browser=new http('http://maps.google.com/maps/geo?output=xml&key=KEY&q=Hafenstraße+140+20309+Hamburg');
var_dump($Browser->get('/'));
$Browser->post('somepage',$Data); 
gibt es nicht eine elegantere lösung, um die adressen mit umlauten etc auszutricksen?
Mit Zitat antworten
  #15 (permalink)  
Alt 14-02-2008, 12:01
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
gibt es nicht eine elegantere lösung, um die adressen mit umlauten etc auszutricksen?
urlencode()?
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
Antwort

Lesezeichen


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

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 14:58 Uhr.