themarcos
Goto Top

Google Maps API ändert Geo-Koordinaten und setzt Markierung immer auf ein Haus

Hallo zusammen

Bei einer Immo-Seite ist eine Google-Maps Karte für Bauländer eingebaut. Die Geo-Koordinaten für die Makrierung kommen aus einer Datenbank-Tabelle. Das Problem ist nun, dass Google bzw. wahrscheinlich die Google-API die Geo-Koordinaten so verändert, dass die Markierung immer auf ein Haus zeigt.

In der Datenbank-Tabelle stehen z.B. folgenden Geo-Koordinaten: 47.2437,8.46842 (diese Geo-Koordinaten verweisen auf ein Bauland, also eine Wiese ohne Haus)
Bei der Google Maps Karte auf meiner Seite zeigt die Markierung aber auf das nächstgelegene Haus. Wenn ich im Quellcode nachschaue, hat Google die Geo-Koordinaten minimal verändert auf: 47.243514,8.468582

Kann man Google Maps irgendwie angeben, dass er genau die mitgegebenen Geo-Koordinaten nehmen und nicht ein Haus in der Nähe suchen soll? Kennt sich jemand damit aus?

Vielen Dank und Gruss

Content-ID: 288796

Url: https://administrator.de/contentid/288796

Ausgedruckt am: 22.11.2024 um 22:11 Uhr

michi1983
michi1983 19.11.2015 aktualisiert um 12:10:39 Uhr
Goto Top
Hallo,

wie bindest du das ganze ein und wo? Etwas mehr Details/Infos wären hilfreich.

Gruß

Edit:
http://gis.stackexchange.com/questions/110942/how-often-does-google-cha ...
114757
114757 19.11.2015 aktualisiert um 12:39:05 Uhr
Goto Top
Moin,
kann ich nicht bestätigen nutzt du die Google JavaScript Maps API 3.0 ? Dann benutze mal folgende Funktion:
function setMyMarker() {
  var myLatLng = {lat:47.2437, lng:8.46842};

  var map = new google.maps.Map(document.getElementById('map'), {  
	zoom: 18,
	center: myLatLng,
	mapTypeId: 'satellite'  
  });

  var marker = new google.maps.Marker({
	position: myLatLng,
	map: map
  });
  
  // Get postition after marker is set on map
  var pos = marker.getPosition();
  marker.setTitle('Position:' + pos)  
}
Ergebnis, Marker nicht auf einem Haus, wäre ja auch ein derber Fehler wenn es anders wäre...

71f923fcdda99e11c9b8a51a7617e5ab

Gruß jodel32
TheMarcoS
TheMarcoS 19.11.2015 um 12:49:22 Uhr
Goto Top
Die Map wird über ein Contao Backend-Modul generiert. Im Quell-Text habe ich dann z.B. folgendes:

head:
<script src="//maps.googleapis.com/maps/api/js?v=3.exp">  

und dann werden natürlich die ganzen APIs wie map.js, geocoder.js, controls.js, marker.js usw. geladen.

body:
function initializeMap() {
    var address = 'Schweiz,8932,Mettmenstetten,';  
    var mapOptions = {
        zoom: 17,
        center: new google.maps.LatLng(47.2437, 8.46842),
        scrollwheel: false,
        mapTypeId: google.maps.MapTypeId.SATELLITE
    };
    var map = new google.maps.Map(document.getElementById('googlemap_24_attr_72'), mapOptions);  
    var geocoder = new google.maps.Geocoder();
    var geocoderOptions = {};
    geocoderOptions.address = '47.2437,8.46842';  
    geocoder.geocode(geocoderOptions, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            map.setCenter(results.geometry.location);
            var marker = new google.maps.Marker({
                map: map,
                position: results.geometry.location
            });
        } else {
            console.log('');  
        }
    });
}
google.maps.event.addDomListener(window, 'load', initializeMap);  



Danke für den Link, schaue ich gerne durch.
114757
114757 19.11.2015 aktualisiert um 13:54:04 Uhr
Goto Top
geocoderOptions.address = '47.2437,8.46842';
Ganz klar der Fehler, Ihr nutzt hier den Geocoder ... der liefert keine exakten Ergebnisse wenn man Ihm Koordinaten übergibt!
Siehe mein Code oben wie man es macht, wenn man schon die Koordinaten hat braucht man doch keinen Geocoder!
Einen Geocoder benutzt man z.B. wenn man von einer Adresse eine Koordinate haben möchte, aber nicht von Koordinaten...
TheMarcoS
TheMarcoS 19.11.2015 aktualisiert um 14:41:23 Uhr
Goto Top
Hey vielen Dank für den Hinweis! face-smile

Wie gesagt kommt das ganze aus einem CMS-Modul. Hier ein Auszug vom Template. Kann ich das irgendwie anpssen? Also anstatt geocoderOptions.address z.B. geocoderOptions.latlng oder so?

var address = '<?php echo $this->country; ?>,<?php echo $this->zipcode; ?>,<?php echo $this->city; ?>,<?php echo $this->street; ?>';  
var mapOptions = 
{
	zoom: 17,
	<?php if($this->hasCoordinates): ?>
	center: new google.maps.LatLng(<?php echo $this->latitude; ?>, <?php echo $this->longitude; ?>),
	<?php endif; ?>
	scrollwheel: false,
	mapTypeId: google.maps.MapTypeId.SATELLITE 
};

var map = new google.maps.Map(document.getElementById('<?php echo $this->selector; ?>'),mapOptions);  
  
var geocoder = new google.maps.Geocoder();
var geocoderOptions = {};
<?php if($this->hasCoordinates): ?>
geocoderOptions.address = '<?php echo $this->latitude; ?>,<?php echo $this->longitude; ?>';  
<?php else: ?>
geocoderOptions.address = address;
<?php endif; ?>

geocoder.geocode(geocoderOptions, function(results, status) 
{
  if (status == google.maps.GeocoderStatus.OK) 
  {
    map.setCenter(results.geometry.location);
    var marker = new google.maps.Marker(
    {
        map: map,
        position: results.geometry.location
    });
  } 
});
114757
Lösung 114757 19.11.2015 aktualisiert um 16:41:54 Uhr
Goto Top
Mal wieder so'n Copy n' Paste -Bär was ?!... na gut viel Erfolg...
var address = '<?php echo $this->country; ?>,<?php echo $this->zipcode; ?>,<?php echo $this->city; ?>,<?php echo $this->street; ?>';  
var mapOptions = 
{
	zoom: 17,
	<?php if($this->hasCoordinates): ?>
	center: new google.maps.LatLng(<?php echo $this->latitude; ?>, <?php echo $this->longitude; ?>),
	<?php endif; ?>
	scrollwheel: false,
	mapTypeId: google.maps.MapTypeId.SATELLITE 
};

var map = new google.maps.Map(document.getElementById('<?php echo $this->selector; ?>'),mapOptions);  
  
<?php if($this->hasCoordinates): ?>
    var pos = {lat:<?php echo $this->latitude; ?>, lng:<?php echo $this->longitude; ?>};
    map.setCenter(pos);
    var marker = new google.maps.Marker({
        map: map,
        position: pos
    });
<?php endif; ?>
TheMarcoS
TheMarcoS 19.11.2015 um 16:41:51 Uhr
Goto Top
Genial, funktioniert! Vielen Dank! face-smile