Startseite  /  Forum  /  Download
Gmapper Forum / DrawCircle()

Gmapper Forum

Sie sind nicht angemeldet.

#1 24.10.07 22:52:10

msin
Mitglied

DrawCircle()

Guten Tag liebe Leute!

Mein grösster Wunsche wäre eine Funktion für einen DrawCircle().

Leider bringe ich es nicht fertig den Kreis selbst zu berechnen sonst könnte ich dies mit der Funktion polyline() lösen.

Vielleicht kann mir jemand helfen.

Gruss Marcel

Offline

 

#2 08.11.07 15:11:29

a6000000
Mitglied

Re: DrawCircle()

Da muesstest Du entweder nochmal im Schulbuch nach Kreisfunktionen sin und cos nachlesen, oder das http://vgmap.eyebeamresearch.org/  nehmen

Andreas

Offline

 

#3 08.11.07 21:46:35

msin
Mitglied

Re: DrawCircle()

Besten Dank für Deine Hilfe.

Ich war in Geometrie nie gut und muss auch heute noch abschreiben :-)

Ich habe aber mein altes Script übernommen. Es wäre schön gewesen wenn es bereits in gmapper eingepflanzt gewesen wäre.

Gruss Marcel

function drawCircle(){
    var zoom = map.getZoom();
    var centerPt = normalProj.fromLatLngToPixel(centerPoint, zoom);
    var radiusPt = normalProj.fromLatLngToPixel(radiusPoint, zoom);
    var circlePoints = Array();
    with (Math) {
        radius = floor(sqrt(pow((centerPt.x-radiusPt.x),2) + pow((centerPt.y-radiusPt.y),2)));

        for (var a = 0 ; a < 361 ; a+=10 ) {
            var aRad = a*(PI/180);
            var y = centerPt.y + radius * sin(aRad)
            var x = centerPt.x + radius * cos(aRad)
            var p = new GPoint(x,y);
            circlePoints.push(normalProj.fromPixelToLatLng(p, zoom));
        }
        map.removeOverlay(circleLine);
        circleLine = new GPolyline(circlePoints,"red",2,1);
        map.addOverlay(circleLine);
    }
}

Offline

 

#4 09.11.07 23:52:19

clinder
Mitglied

Re: DrawCircle()

Schönes Script.

Aber hält das auch noch Stand wenn ich 500 Kreise malen will? Der Browser rendert sich doch dann einen Wolf oder?

Gruß
Chris

Offline

 

#5 11.11.07 03:20:48

Philipp
Administrator

Re: DrawCircle()

Werde mal sehen ob ich so etwas in der nächsten release Version von Gmapper aufnehme smile
Nette Anregung jedenfalls smile

Offline

 

#6 07.12.07 01:20:55

Philipp
Administrator

Re: DrawCircle()

Ich musste die Funktion zwar relativ stark umschreiben, die Kreisberechnung habe ich aber so übernommen smile
Auch habe ich die Funktionalität ein wenig erweitert smile

Die neue PHP Methode drawCircle wird ab Gmapper 1.1 bereitstehen.

Sie wird wie folgt funktionieren:

$karte->drawCircle(48,10,120,["#FFFF00"],[3],["rot.png"]);

Die Methode erwartet 3 Parameter, zunächst den Mittelpunkt des Kreises als Lat/Lng , dann den Radius in Pixel.

Die Parameter danach sind optional und erlauben es, die Linienstärke (Default: 1 ) und Farbe (Default: rot) der Kreislinie festzulegen.
Der letzte Parameter ist ebenfalls optional.
Übergibt man hier einen Dateinamen einer Markergrafik zeichnet die Methode an jeden Punkt der Kreislinie einen MapMarker , der wenn angeklickt eine Detailkarte enthält. (Default: Keine Marker)

smile

Hier eine Demo:
http://gmapper.ajax-info.de/demo/democircle.php

Offline

 

#7 16.12.07 20:11:35

Philipp
Administrator

Re: DrawCircle()

Habe die Methode nochmal verbessert.
Sie nutztz nun GPolygon, statt GPoyline

Damit ist es auch möglich den Kreis farbig zu hinterlegen.
In späteren Versionen ermöglicht GPolygon es auch einfach, andere Formen als Kreise zu implementieren.

http://gmapper.ajax-info.de/demo/democircle.php

Offline

 

#8 12.01.08 10:11:41

dstosch
Mitglied

Re: DrawCircle()

gibt es eine Möglichkeit, dass der  Kreis sich automatisch an die Zoom-Stufe anpasst? Das wäre sehr Sinnvoll, wenn man einen bestimmten Radius um einen Punkt darstellen möchte.

Gruß
Daniel

Beitrag geändert von dstosch (12.01.08 10:14:05)

Offline

 

#9 12.01.08 14:20:18

Philipp
Administrator

Re: DrawCircle()

Hallo Daniel,

sehr gute Idee. Werde sehen was ich da für die nächste Version tun kann smile

Offline

 

#10 13.01.08 13:36:24

dstosch
Mitglied

Re: DrawCircle()

Philipp schrieb:

Hallo Daniel,

sehr gute Idee. Werde sehen was ich da für die nächste Version tun kann smile

Dies wäre super ....


Daniel

Offline

 

#11 24.09.09 15:31:55

branco
Mitglied

Re: DrawCircle()

Problem mit DrawCircle und Opera

Wenn ich eine Karte mit einem Kreis vergrößere und wieder verkleiner
entstehen weitere Kreise. Firefox und IE arbeiten diesbezüglich korrekt?

Abhilfe?

Offline

 

#12 24.09.09 15:45:28

branco
Mitglied

Re: DrawCircle()

Entschuldigung, das war in das falsche Fach gerutscht

Offline

 

#13 08.11.09 18:21:32

wiegehtdas?
Mitglied

Re: DrawCircle()

Hallo!
Ja, der nachfolgende Code bildet einen schönen Kreis in Google Maps.

function drawCircle(){
    var zoom = map.getZoom();
    var centerPt = normalProj.fromLatLngToPixel(centerPoint, zoom);
    var radiusPt = normalProj.fromLatLngToPixel(radiusPoint, zoom);
    var circlePoints = Array();
    with (Math) {
        radius = floor(sqrt(pow((centerPt.x-radiusPt.x),2) + pow((centerPt.y-radiusPt.y),2)));

        for (var a = 0 ; a < 361 ; a+=10 ) {
            var aRad = a*(PI/180);
            var y = centerPt.y + radius * sin(aRad)
            var x = centerPt.x + radius * cos(aRad)
            var p = new GPoint(x,y);
            circlePoints.push(normalProj.fromPixelToLatLng(p, zoom));
        }
        map.removeOverlay(circleLine);
        circleLine = new GPolyline(circlePoints,"red",2,1);
        map.addOverlay(circleLine);
    }
}

Aber noch viel interessanter wäre es, einen Radar-Chart abbilden zu können.
Das heisst, dass anstatt des Kreises aus einer Reihe von Radiuswerten (in einem Dataset) ein kreisähnliches Gebilde (Polygon) zustande kommen kann.
Google bietet dazu eine Api an: http://code.google.com/intl/de-DE/apis/ … html#radar
Jedoch lässt sich das Gebilde dann nur als img bzw. Icon in Google Maps einbauen, ist dann aber nicht zoomfähig. Gibts dafür eine Lösung?

Offline

 

Brett Fußzeile

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson