x

Re: Mehrere Karten auf einer Seite + Adressumrechnung


Geschrieben von wellseo (Gast) am 15. Februar 2013 17:21:02: [flux]

Als Antwort auf: Mehrere Karten auf einer Seite + Adressumrechnung geschrieben von wellseo (Gast) am 07. Februar 2013 11:57:

Ja servus Wolf, servus geri-oc und servus Gemeinschaft!

Danke Wolf, Deine Erörterung hat mir geholfen. Adressen werden mittlerweile umgerechnet und auch die Karten werden angezeigt. Auch eine Zoomfunktion habe ich integrieren können. Die Adressumrechnung habe ich übrigends mit Hilfe eines anderen Dialogs von/mit Dir hier im Forum lösen können. (Für interessierte Leser/Nachmacher: http://forum.openstreetmap.org/viewtopic.php?id=15811) Auch wenn Du mir zuvor empfohlen hast, diese Umrechnungen zwischenzuspeichern, mache ich es aktuell bei jedem Kartenaufruf. Ja, dauert 1-2 Sekunden, bis die Karten aufgebaut sind, was jedoch akzeptabel scheint. Oder siehst Du da noch andere Probleme?

Warum ich aber schreibe, abgesehen um wieder meinen Dank auszusprechen: Wie bekomme ich jetzt einen Marker in die Karte? Natürlich habe ich auch hier probiert mich zu belesen und/oder an anderen Karten mir ein Beispiel zu nehmen, was aber nicht recht funktioniert. Ist halt wirklich erst mein erstes Projekt mit OSM... Habe zuvor immer nur die API von Noodle genutzt.

Ich poste mal meinen bisherigen Code, damit man sehen kann, wie ich das bisher alles gebaut habe:

In meiner header.php:

<script␣type="text/javascript">
function␣drawMap(id,␣lon,␣lat,␣zoom)␣{
//----------------------------------------------------------------------------
//	id:␣id␣des␣zugehörigen␣<div>
//----------------------------------------------------------------------------
var␣map␣=␣new␣OpenLayers.Map␣(id,␣{controls:␣[
new␣OpenLayers.Control.Zoom()
]});
//----------------------------------------------------------------------------
//	Default-Koordinatensystem␣fuer␣alle␣Controls
//----------------------------------------------------------------------------
map.displayProjection␣=␣new␣OpenLayers.Projection("EPSG:4326");
//----------------------------------------------------------------------------
//	Kartenlayer
//----------------------------------------------------------------------------
map.addLayer␣(new␣OpenLayers.Layer.OSM.Mapnik('KartenId:␣'␣+␣id));
//----------------------------------------------------------------------------
//	Positioniere␣auf␣die␣angegebene␣Position
//----------------------------------------------------------------------------
var␣lonLat␣=␣new␣OpenLayers.LonLat(lon,␣lat).
transform(map.displayProjection,␣map.getProjectionObject())
map.setCenter␣(lonLat,␣zoom);
};
var␣mapIdSequence␣=␣0;
function␣drawMaps␣()␣{
var␣divElements␣=␣document.getElementsByTagName('div');
for␣(divIndex=0;␣divIndex<divElements.length;␣divIndex++)␣{
var␣div␣=␣divElements[divIndex];
var␣title␣=␣div.title␣||␣'';
if␣(title.substring(0,4)␣!=␣'map␣')␣continue;
var␣idLonLatTitle␣=␣title.split('␣',␣5);
var␣id␣=␣'map'␣+␣++mapIdSequence;
div.id␣␣␣␣=␣id;
div.title␣=␣idLonLatTitle[4];
drawMap(id,␣idLonLatTitle[1],␣idLonLatTitle[2],␣idLonLatTitle[3]);
}
}
//-->
</script>

In meiner functions.php:

function␣umlaute($text)
{
$search␣␣=␣array␣('ä',␣'ö',␣'ü',␣'Ä',␣'Ö',␣'Ü',␣'ß');
$replace␣=␣array␣('ae',␣'oe',␣'ue',␣'Ae',␣'Oe',␣'Ue',␣'ss');
$str2␣␣=␣str_replace($search,␣$replace,␣$text);
return␣$str2;
}

In meiner content-index.php:

<?php
$adresse=umlaute($adresse_g␣=␣get_post_meta($post->ID,␣'geburtsplz_g',␣true)␣.␣"␣"␣.␣get_post_meta($post->ID,␣'geburtsort_g',␣true)␣.␣"␣"␣.␣get_post_meta($post->ID,␣'geburtsbundesland_g',␣true)␣.␣"␣"␣.␣get_post_meta($post->ID,␣'geburtsland_g',␣true));
$url␣=␣"http://nominatim.openstreetmap.org/search?format=json&q="␣.␣rawurlencode($adresse);
$response␣=␣file_get_contents($url);
$parsed␣=␣json_decode($response);
$result0␣=␣$parsed[0];
$lat=$result0->lat;
$lon=$result0->lon;
?>
<div␣class="alignright">
<div␣title="map␣<?php␣echo␣$lon␣?>␣<?php␣echo␣$lat␣?>␣8␣Karte-<?php␣the_ID();␣?>"␣style="height:200px;width:200px;background:gray;"></div>
</div>

Nun nochmal die finale Frage: wäre jemand so gnädig, mir die Integration eines Markers zu erörtern bzw. zu zeigen?

Vielen, vielen Dank für das Engagement!