Popuper vid geopoint på googlemaps

Diskussion i 'Frågor, support och diskussion' startad av Lurv, 1 jun 2010.

  1. Lurv

    Lurv Kid Droid Medlem

    Blev medlem:
    15 mar 2010
    Inlägg:
    36
    Mottagna gillanden:
    1

    MINA ENHETER

    Har en app som använder Google maps. Jag får ut fina små iconer på olika ställen, nu skulle jag vilja få ut en infobox precis vid (snarare strax ovan) min kartnålar som innehåller lite text. om användaren klickar på texten ska en ny activity laddas...

    Hur gör jag detta? har googlat mig gråhårig snart...
     
  2. sniff

    sniff Youth Droid Medlem

    Blev medlem:
    3 okt 2009
    Inlägg:
    132
    Mottagna gillanden:
    0

    MINA ENHETER

    du får skapa en egen overlay och sedan kan du rita i din overlays draw-funktion.
     
  3. Lurv

    Lurv Kid Droid Medlem

    Blev medlem:
    15 mar 2010
    Inlägg:
    36
    Mottagna gillanden:
    1

    MINA ENHETER

    Kan du utveckla lite mer?
     
  4. sniff

    sniff Youth Droid Medlem

    Blev medlem:
    3 okt 2009
    Inlägg:
    132
    Mottagna gillanden:
    0

    MINA ENHETER

    kan jag väl :)

    gör en ny klass som extendar "Overlay"
    Kod:
    public class myOverlay extends Overlay 
    {
    	public myOverlay() {
    
    	}
    
    	public boolean onTouchEvent(MotionEvent ev, MapView mapView) {
    		if (ev.getAction() == MotionEvent.ACTION_DOWN) 
    		{
    			// så man kan trycka på saker, alltid roligt...
    		}
    		return super.onTouchEvent(ev, mapView);
    	}
    
    	public void draw(Canvas canvas, MapView mapView, boolean shadow) 
    	{
    		// här ritar du ut din infoboxm, det är som att rita på en vanlig canvas...
    	}
    }
    
    sedan lägger du till din overlay till din mapview
    Kod:
    mapView = (MapView) findViewById(R.id.mapView);
    
    myOverlay overlay = new myOverlay();
     
    mapView.getOverlays().add(overlay);
    
    // kan vara bra att rita om kartan sedan också
    mapView.postInvalidate();
    
    ungefär så. det är ju lite mer kod om man faktiskt ska göra något med sin overlay, men jag tror att det är ganska lätt att förstå... annars får du säga till...
     
  5. bellemannen

    bellemannen Baby Droid Medlem

    Blev medlem:
    10 dec 2009
    Inlägg:
    17
    Mottagna gillanden:
    0

    MINA ENHETER

    Jag undrar lite samma sak, finns det ingen standard infobox att använda, blir lite meckigt att skapa en egen när man skall anpassa bitmap efter textlängd, radbrytningar etc. Hittar du ngt, så posta gärna här.
     
  6. sniff

    sniff Youth Droid Medlem

    Blev medlem:
    3 okt 2009
    Inlägg:
    132
    Mottagna gillanden:
    0

    MINA ENHETER

    Kod:
    float textWidth = text.measureText("sträng");
    
    kanske inte det smidigaste, men jag har inte hittat något annat.

    sedan är väl känslan jag får att om man inte vet hur många rader man behöver skriva ut eller om strängen kommer bli jättelång så kanske man ska lösa det på något annat sätt för då finns risken att inforutan täcker mycket av kartan, men så vet jag ju inte heller vad ni ska ha det till...

    edit: sedan ritar jag själv rutan med canvas.drawRoundRect() så jag är inte låst till någon bild där
     
  7. bellemannen

    bellemannen Baby Droid Medlem

    Blev medlem:
    10 dec 2009
    Inlägg:
    17
    Mottagna gillanden:
    0

    MINA ENHETER

    För min del är det användargenererad data som skall in i infoboxen, men man kan ju alltid korta av textsträngar med "... " tack för tipsen
     
  8. Lurv

    Lurv Kid Droid Medlem

    Blev medlem:
    15 mar 2010
    Inlägg:
    36
    Mottagna gillanden:
    1

    MINA ENHETER

    Jag förstår inte riktigt hur detta ska se ut...

    Lite kod jag har idag...


    från min mapActivity:
    Kod:
    List<Overlay> mapOverlays = mapView.getOverlays();
    		Drawable drawable = this.getResources().getDrawable(
    				R.drawable.mack);
    		MackPosition itemizedoverlay = new MackPosition(drawable,
    				this);
    
    		for (Mack mack: macker) {
    			Double lat = Double.parseDouble(mack.getLat()) * 1E6;
    			Double lng = Double.parseDouble(mack.getLng()) * 1E6;
    			GeoPoint geoPoint = new GeoPoint(lat.intValue(), lng.intValue());
    
    			String dist = distanceBetween2Points(me, geoPoint);
    
    			OverlayItem overlayitem = new OverlayItem(geoPoint, mack
    					.getNamne(), dist);
    
    			itemizedoverlay.addOverlay(overlayitem);
    MackPosition extends ItemizedOverlay<OverlayItem> men innehåller nästan inget, med denna kod får jag ut ikoner på kartan men som sagt så vill jag visa en info text i stil med en Toast som innehåller namn och distans till macken från nuvarande pos samt om man klickar på infotexten så skickas man vidare till en ny activity...
     
  9. sniff

    sniff Youth Droid Medlem

    Blev medlem:
    3 okt 2009
    Inlägg:
    132
    Mottagna gillanden:
    0

    MINA ENHETER

    Vet inte hur det fungerar att lägga till en egen overlay på en ItemizedOverlay, pröva såhär istället så borde det nog fungera:
    Kod:
    	mapOverlays.addOverlay(overlayitem);
    
    edit:
    din mapView har ju en lista med overlays som ritas ut ovanpå den så du vill ju ha din egna i den listan.