Hi,
ich habe mit Eurer Hilfe den nachfolgenden Script geschrieben, der auch einwandfrei funktioniert. Es gibt aber zwei Dinge, die mich stören:
-
Der Tooltip ist zu groß. Ich benötige zudem nur einen Tooltip, der nur beim überfahren eines POIS erscheint und sich an der Größe des Textes orientiert. Ein Aufruf per Mausklick ist nicht gewünscht. Netzwolf hat so etwas ähnliches programmiert unter http://www.netzwolf.info/kartografie/openlayers/csv_angepasst2_tooltip Aber leider blicke ich da nicht ganz durch
-
Ist es möglich, per Button in der Karte alle Pois an bzw. wieder anzuschalten? Wenn ja, wie!
Danke im voraus für Eure Hilfe
<?php
$lat=51.20418118214776;
$long=7.1737611293792725;
$uk1=$long-0.04200;
$uk2=$lat-0.02700;
$uk3=$long+0.04200;
$uk4=$lat+0.02700;
$ja1 = file_get_contents('http://nominatim.openstreetmap.org/search?viewbox='.$uk1.','.$uk2.','.$uk3.','.$uk4.'&bounded=1&format=json&polygon=0&addressdetails=1&q=schule&limit=999');
$jb1 = json_decode($ja1);
$ja2 = file_get_contents('http://nominatim.openstreetmap.org/search?viewbox='.$uk1.','.$uk2.','.$uk3.','.$uk4.'&bounded=1&format=json&polygon=0&addressdetails=1&q=kindergarten&limit=999');
$jb2 = json_decode($ja2);
$ja3 = file_get_contents('http://nominatim.openstreetmap.org/search?viewbox='.$uk1.','.$uk2.','.$uk3.','.$uk4.'&bounded=1&format=json&polygon=0&addressdetails=1&q=supermarkt&limit=999');
$jb3 = json_decode($ja3);
$a=0;
$anzahl=count($jb1);
while ($a<$anzahl)
{
if ($jb1[$a]->address->school=="")
{
$art="Schule";
}
else
{
$art=$jb1[$a]->address->school;
}
$ic1=$jb1[$a]->lat."\t".$jb1[$a]->lon."\t \t".$art."\tsymbole/school.png\t32,37\t-16,-18\n";
$schule=$schule.$ic1;
$a++;
}
$a=0;
$anzahl=count($jb2);
while ($a<$anzahl)
{
if ($jb2[$a]->address->kindergarten=="")
{
$art="Kindergarten";
}
else
{
$art=$jb2[$a]->address->kindergarten;
}
$ic1=$jb2[$a]->lat."\t".$jb2[$a]->lon."\t \t".$art."\tsymbole/kgarten.png\t32,37\t-16,-18\n";
$kgarten=$kgarten.$ic1;
$a++;
}
$a=0;
$anzahl=count($jb3);
while ($a<$anzahl)
{
if ($jb3[$a]->address->supermarket=="")
{
$art="Supermarkt";
}
else
{
$art=$jb3[$a]->address->supermarket;
}
$ic1=$jb3[$a]->lat."\t".$jb3[$a]->lon."\t \t".$art."\tsymbole/smarket.png\t32,37\t-16,-18\n";
$smarkt=$smarkt.$ic1;
$a++;
}
$poi="lat\tlon\ttitle\tdescription\ticon\ticonSize\ticonOffset\n".$schule.$kgarten.$smarkt;
$datei = fopen("daten.txt", "w");
fwrite($datei,$poi);
fclose($datei);
?>
<div align="center">
<style type="text/css">.olControlAttribution { bottom: 3px!important; }</style>
<script src="http://www.openlayers.org/api/OpenLayers.js">
</script><script src="http://www.openstreetmap.org/openlayers/OpenStreetMap.js">
</script><div id="map" style="width:500px;height:340px;">
</div>
<script type="text/javascript" src="OpenLayers_Map_minZoom_maxZoom_Patch.js"></script>
<script type="text/javascript" src="my_panzoombar.js"></script>
<script type="text/javascript">
var map;
function showMap()
{
map = new OpenLayers.Map("map",
{
maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
maxResolution: 156543.0399,
units: "m",
projection: new OpenLayers.Projection("EPSG:900913"),
displayProjection: new OpenLayers.Projection("EPSG:4326"),
controls: [],
minZoom:12,
maxZoom:18
});
map.addControl (new OpenLayers.Control.Attribution());
map.addControl (new OpenLayers.Control.Navigation());
map.addControl (new OpenLayers.Control.PanZoomBar({minZoom: 12}));
OpenLayers.Marker.defaultIcon = function () {
return new OpenLayers.Icon ("symbole/nadel.png", {w:35, h:41}, {x: -10, y:-30});
};
var layerMapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik (updated weekly)");
var layerTah = new OpenLayers.Layer.OSM.Osmarender("Tiles@Home");
map.addLayers([layerMapnik]);
var pois = new OpenLayers.Layer.Text( "My Points",
{ location:"./daten.txt",
projection: map.displayProjection
});
map.addLayer(pois);
map.setCenter(new OpenLayers.LonLat(<?php echo $long; ?>,<?php echo $lat; ?>).transform(new OpenLayers.Projection("EPSG:4326"),
new OpenLayers.Projection("EPSG:900913")), 14);
map.addLayer(new OpenLayers.Layer.Markers());
var marker = new OpenLayers.Marker(map.getCenter());
marker.events.register("mousedown", marker, function(evt)
{
OpenLayers.Event.stop(evt);
}
);
map.layers[map.layers.length-1].addMarker(marker);
}
showMap();
</script>