OK, I guess the solution probably will be to use the built in pins and
the various colors they have or use images.

I have been playing around with this solution and have run into a new
problem. This is that I have to update the way pins look every 5
seconds or so. Depending on some data I am loading in the background.
Making some simple tests I have not found a nice solution to how to
update the view of a pin. I could not find any methods allowing you to
update the view or push a new view on a pin and nicely redrawing it.
So I have been removing the pins updating the colors then adding new
pins with the new colors. Which means that the pins will flicker every
5 seconds when they are removed and re-added with a new color. This
also means in this timespan the pins are updating, the user cannot
interact with the pin, which is a requirement.

Do you know of a way to do this nicely? I have been searching the
Internet and cannot seem to find any examples on how to doing this
other than removing the pins and re-adding them. Also this seems need
to be done on the main thread, as I have been trying to do it in a
thread of it's own. This results in the old pin still being there
until I zoom in on the map or somehow force the map to be re-drawn
along with the pins.



On Tue, Sep 6, 2011 at 4:19 PM, Mikkel Lønow <[email protected]> wrote:
> Good.
> Unfortunately, I haven't tried to draw circles that scales when zooming. You
> could put a label on top of the annotation instead, which you can update
> when you need to?
>
> On Tue, Sep 6, 2011 at 16:09, Tomasz Cielecki <[email protected]> wrote:
>>
>> OK, seems to work now. Thank you.
>>
>> Though I would still prefer if I could just draw a circle with text
>> inside as I could imagine having images for every possible number that
>> could appear inside the circle could be problematic to generate.
>>
>> MonoDroid/Android and Windows Phone 7 makes this possible and the
>> overlay layer drawn on top of the map scales when you zoom in and out
>> even though you have specified a radius.
>>
>> See these images for an example:
>> http://imageshack.us/photo/my-images/18/device20110906153628.png/
>> http://imageshack.us/photo/my-images/801/device20110906160751.png/
>>
>> This is the same effect I want. Preferably without using images. As
>> both text and the color of the circle has to be updated sometimes.
>>
>> On Tue, Sep 6, 2011 at 1:11 PM, Mikkel Lønow <[email protected]> wrote:
>> > It's working in MonoDevelop 2.6 RC2. Get it from the updater :) Make
>> > sure to
>> > set Build Action to Content.
>> > Otherwise, you would have to copy them yourself.
>> >
>> > On Tue, Sep 6, 2011 at 13:08, Tomasz Cielecki <[email protected]>
>> > wrote:
>> >>
>> >> So It seems the images are not included in the .app file. My guess
>> >> this is not what I want :D Now how do I make them jump in there
>> >> willingly?
>> >>
>> >> On Tue, Sep 6, 2011 at 9:11 AM, Mikkel Lønow <[email protected]> wrote:
>> >> > It should be in bin/Debug/iPhoneSimulator. It's copied to the
>> >> > simulator after compilation.
>> >> >
>> >> > On 06/09/2011, at 09.08, Tomasz Cielecki <[email protected]>
>> >> > wrote:
>> >> >
>> >> >> Trouble is that I am currently using the Emulator to test my app.
>> >> >> How
>> >> >> do I find the .app package?
>> >> >>
>> >> >> I am using the latest stable version of MonoDevelop.
>> >> >>
>> >> >> On Mon, Sep 5, 2011 at 3:45 PM, Mikkel Lønow <[email protected]>
>> >> >> wrote:
>> >> >>> Right click / Ctrl click / two finger tab on the .app package and
>> >> >>> select
>> >> >>> Show Package Contents.
>> >> >>> What version of MonoDevelop are you using?
>> >> >>>
>> >> >>> On Mon, Sep 5, 2011 at 15:42, Tomasz Cielecki
>> >> >>> <[email protected]>
>> >> >>> wrote:
>> >> >>>>
>> >> >>>> How do I make sure that they are actually copied into the .app
>> >> >>>> package?
>> >> >>>>
>> >> >>>> On Mon, Sep 5, 2011 at 3:39 PM, Mikkel Lønow <[email protected]>
>> >> >>>> wrote:
>> >> >>>>> At first glance it looks correct.
>> >> >>>>> Is Build Action for pin.png set to Content? Can you make sure
>> >> >>>>> they
>> >> >>>>> are
>> >> >>>>> actually copied to the .app package? (there's a bug in some
>> >> >>>>> versions
>> >> >>>>> of
>> >> >>>>> MonoDevelop where images would not be copied).
>> >> >>>>> Mikkel
>> >> >>>>> P.S. Replied to all.
>> >> >>>>> On Mon, Sep 5, 2011 at 15:32, Tomasz Cielecki
>> >> >>>>> <[email protected]>
>> >> >>>>> wrote:
>> >> >>>>>>
>> >> >>>>>> I think your suggestion is more or less the same way I am
>> >> >>>>>> implementing
>> >> >>>>>> it.
>> >> >>>>>>
>> >> >>>>>> Code can be seen here https://gist.github.com/1194994 or:
>> >> >>>>>>
>> >> >>>>>> Here is my Main.cs file:
>> >> >>>>>> using System;
>> >> >>>>>> using System.Collections.Generic;
>> >> >>>>>> using System.Linq;
>> >> >>>>>> using MonoTouch.Foundation;
>> >> >>>>>> using MonoTouch.UIKit;
>> >> >>>>>> using LoadSiteList;
>> >> >>>>>> using MonoTouch.MapKit;
>> >> >>>>>> using MonoTouch.CoreLocation;
>> >> >>>>>>
>> >> >>>>>> namespace MapsStuff
>> >> >>>>>> {
>> >> >>>>>>
>> >> >>>>>>
>> >> >>>>>>        public class Application
>> >> >>>>>>        {
>> >> >>>>>>                static void Main (string[] args)
>> >> >>>>>>                {
>> >> >>>>>>                        UIApplication.Main (args);
>> >> >>>>>>                }
>> >> >>>>>>        }
>> >> >>>>>>
>> >> >>>>>>
>> >> >>>>>>        // The name AppDelegate is referenced in the
>> >> >>>>>> MainWindow.xib
>> >> >>>>>> file.
>> >> >>>>>>        public partial class AppDelegate : UIApplicationDelegate
>> >> >>>>>>        {
>> >> >>>>>>                UITabBarController tabBarController;
>> >> >>>>>>                os4MapsViewController viewController;
>> >> >>>>>>                MapsStuff.TableViewController viewController2;
>> >> >>>>>>
>> >> >>>>>>
>> >> >>>>>>                // This method is invoked when the application
>> >> >>>>>> has
>> >> >>>>>> loaded
>> >> >>>>>> its UI and
>> >> >>>>>> its ready to run
>> >> >>>>>>                public override bool FinishedLaunching
>> >> >>>>>> (UIApplication
>> >> >>>>>> app,
>> >> >>>>>> NSDictionary options)
>> >> >>>>>>                {
>> >> >>>>>>                        window = new UIWindow
>> >> >>>>>> (UIScreen.MainScreen.Bounds);
>> >> >>>>>>                        tabBarController = new
>> >> >>>>>> UITabBarController();
>> >> >>>>>>
>> >> >>>>>>                        viewController = new
>> >> >>>>>> os4MapsViewController();
>> >> >>>>>>                        viewController2 = new
>> >> >>>>>> TableViewController();
>> >> >>>>>>
>> >> >>>>>>                        viewController.TabBarItem = new
>> >> >>>>>> UITabBarItem
>> >> >>>>>> ("Map",
>> >> >>>>>> UIImage.FromFile("Images/103-map.png"), 0);
>> >> >>>>>>                        viewController2.TabBarItem = new
>> >> >>>>>> UITabBarItem
>> >> >>>>>> ("List",
>> >> >>>>>> UIImage.FromFile("Images/103-map.png"), 0);
>> >> >>>>>>                        tabBarController.ViewControllers = new
>> >> >>>>>> UIViewController[]
>> >> >>>>>> {viewController, viewController2};
>> >> >>>>>>
>> >> >>>>>>                        window.AddSubview(tabBarController.View);
>> >> >>>>>>                        // If you have defined a view, add it
>> >> >>>>>> here:
>> >> >>>>>>                        // window.AddSubview
>> >> >>>>>> (navigationController.View);
>> >> >>>>>>
>> >> >>>>>>                        window.MakeKeyAndVisible ();
>> >> >>>>>>
>> >> >>>>>>                        return true;
>> >> >>>>>>                }
>> >> >>>>>>
>> >> >>>>>>                // This method is required in iPhoneOS 3.0
>> >> >>>>>>                public override void OnActivated (UIApplication
>> >> >>>>>> application)
>> >> >>>>>>                {
>> >> >>>>>>                }
>> >> >>>>>>        }
>> >> >>>>>> }
>> >> >>>>>>
>> >> >>>>>> Next here is the os4MapsViewController.cs:
>> >> >>>>>>
>> >> >>>>>> using System;
>> >> >>>>>> using System.Drawing;
>> >> >>>>>> using System.Collections.Generic;
>> >> >>>>>> using System.Diagnostics;
>> >> >>>>>> using MonoTouch.Foundation;
>> >> >>>>>> using MonoTouch.UIKit;
>> >> >>>>>> using MonoTouch.MapKit;
>> >> >>>>>> using MonoTouch.CoreLocation;
>> >> >>>>>>
>> >> >>>>>> namespace MapsStuff
>> >> >>>>>> {
>> >> >>>>>>        public class os4MapsViewController: UIViewController
>> >> >>>>>>        {
>> >> >>>>>>                private MKMapView _mapView { get; set; }
>> >> >>>>>>                List<MapsStuff.MapAnnotation> pins;
>> >> >>>>>>
>> >> >>>>>>                public MKMapView MapView
>> >> >>>>>>                {
>> >> >>>>>>                        get { return _mapView; }
>> >> >>>>>>                }
>> >> >>>>>>
>> >> >>>>>>                public os4MapsViewController () : base()
>> >> >>>>>>                {}
>> >> >>>>>>
>> >> >>>>>>                public override void ViewDidLoad ()
>> >> >>>>>>                {
>> >> >>>>>>                        base.ViewDidLoad ();
>> >> >>>>>>
>> >> >>>>>>                        //
>> >> >>>>>>                        // Create our map view and add it as as
>> >> >>>>>> subview.
>> >> >>>>>>                        //
>> >> >>>>>>                        pins = CreateRandomPins();
>> >> >>>>>>                        _mapView = new MKMapView();
>> >> >>>>>>                        _mapView.Frame = new RectangleF (0, 0,
>> >> >>>>>> this.View.Frame.Width,
>> >> >>>>>> this.View.Frame.Height);
>> >> >>>>>>                        _mapView.ShowsUserLocation = true;
>> >> >>>>>>                        _mapView.MapType = MKMapType.Hybrid;
>> >> >>>>>>                        _mapView.Delegate = new
>> >> >>>>>> MapViewDelegate();
>> >> >>>>>>                        foreach (MapAnnotation m in pins)
>> >> >>>>>>                        {
>> >> >>>>>>                                _mapView.AddAnnotation(m);
>> >> >>>>>>                        }
>> >> >>>>>>                        View.AddSubview(_mapView);
>> >> >>>>>>                }
>> >> >>>>>>
>> >> >>>>>>                List<MapsStuff.MapAnnotation> CreateRandomPins()
>> >> >>>>>>                {
>> >> >>>>>>                        Random r = new Random();
>> >> >>>>>>                        List<MapsStuff.MapAnnotation> locations =
>> >> >>>>>> new
>> >> >>>>>> List<MapsStuff.MapAnnotation>();
>> >> >>>>>>                        for (int i = 0; i < 4; i++)
>> >> >>>>>>                        {
>> >> >>>>>>                                        locations.Add(
>> >> >>>>>>                                              new
>> >> >>>>>> MapsStuff.MapAnnotation(
>> >> >>>>>>                                                  new
>> >> >>>>>> CLLocationCoordinate2D(r.NextDouble() * 180,
>> >> >>>>>> r.NextDouble() * 180),
>> >> >>>>>>                                                  "test" + i,
>> >> >>>>>>                                                  "sub" + i
>> >> >>>>>>                                              ));
>> >> >>>>>>                        }
>> >> >>>>>>
>> >> >>>>>>                        return locations;
>> >> >>>>>>                }
>> >> >>>>>>        }
>> >> >>>>>>        public class MapViewDelegate : MKMapViewDelegate
>> >> >>>>>>        {
>> >> >>>>>>                public MapViewDelegate (): base()
>> >> >>>>>>                {
>> >> >>>>>>                }
>> >> >>>>>>                public override MKAnnotationView
>> >> >>>>>> GetViewForAnnotation
>> >> >>>>>> (MKMapView
>> >> >>>>>> mapView, NSObject annotation)
>> >> >>>>>>                {
>> >> >>>>>>                        var anv =
>> >> >>>>>> mapView.DequeueReusableAnnotation("thislocation");
>> >> >>>>>>                        if (anv == null)
>> >> >>>>>>                        {
>> >> >>>>>>                                Console.WriteLine("creating new
>> >> >>>>>> MKAnnotationView");
>> >> >>>>>>                                anv = new
>> >> >>>>>> MKPinAnnotationView(annotation,
>> >> >>>>>> "thislocation");
>> >> >>>>>>                        }
>> >> >>>>>>                        else
>> >> >>>>>>                        {
>> >> >>>>>>                                anv.Annotation = annotation;
>> >> >>>>>>                        }
>> >> >>>>>>                        anv.Image = new UIImage("pin.png");
>> >> >>>>>>                        anv.CanShowCallout = true;
>> >> >>>>>>                        return anv;
>> >> >>>>>>                }
>> >> >>>>>>        }
>> >> >>>>>> }
>> >> >>>>>>
>> >> >>>>>> So both the referenced images in Main.cs and the ones in
>> >> >>>>>> os4MapsViewController.cs are not shown
>> >> >>>>>>
>> >> >>>>>>
>> >> >>>>>> http://imageshack.us/photo/my-images/850/screenshot20110905at323.png/
>> >> >>>>>> <-- this image shows what I get on the emulator.
>> >> >>>>>>
>> >> >>>>>> pin.png lies in the root folder of my project. The other image
>> >> >>>>>> lies
>> >> >>>>>> in
>> >> >>>>>> the folder Images in the project dir. None of them seems to show
>> >> >>>>>> up.
>> >> >>>>>>
>> >> >>>>>> Any ideas? I know the code provided uses MKPinAnnotationView,
>> >> >>>>>> but
>> >> >>>>>> changing it to MKAnnotationView simply shows nothing.
>> >> >>>>>>
>> >> >>>>>> On Mon, Sep 5, 2011 at 2:48 PM, Mikkel Lønow <[email protected]>
>> >> >>>>>> wrote:
>> >> >>>>>>> Hi Tomasz,
>> >> >>>>>>> I believe MKAnnotationView would be your best option. Use a
>> >> >>>>>>> custom
>> >> >>>>>>> MKMapViewDelegate and override GetViewForAnnotation where you
>> >> >>>>>>> call
>> >> >>>>>>> mapView.DequeueReusableAnnotation to reuse the annotation view
>> >> >>>>>>> (or
>> >> >>>>>>> create a
>> >> >>>>>>> new if null). Here you can set your image to the annotation
>> >> >>>>>>> view.
>> >> >>>>>>> Feel free to share your implementation if you need more help.
>> >> >>>>>>> Mikkel
>> >> >>>>>>>
>> >> >>>>>>> On Mon, Sep 5, 2011 at 14:01, Tomasz Cielecki
>> >> >>>>>>> <[email protected]>
>> >> >>>>>>> wrote:
>> >> >>>>>>>>
>> >> >>>>>>>> Hello MonoTouch list,
>> >> >>>>>>>>
>> >> >>>>>>>> I am in the midst of creating a iPhone app where I need a map
>> >> >>>>>>>> with
>> >> >>>>>>>> some circles, where the circle colors changes depending on the
>> >> >>>>>>>> data
>> >> >>>>>>>> received asynchronously in the background.
>> >> >>>>>>>>
>> >> >>>>>>>> So my first approach to this was to get a Map shown on the
>> >> >>>>>>>> devices
>> >> >>>>>>>> with a circle, which works fine. Only problem is that MKCircle
>> >> >>>>>>>> takes
>> >> >>>>>>>> a
>> >> >>>>>>>> radius for that circle, which means the circle is only visible
>> >> >>>>>>>> at
>> >> >>>>>>>> some
>> >> >>>>>>>> zoom level. So lets say the circle radius is 100 meters, then
>> >> >>>>>>>> I
>> >> >>>>>>>> have
>> >> >>>>>>>> to zoom to almost the biggest zoom level to get to a point
>> >> >>>>>>>> where
>> >> >>>>>>>> I
>> >> >>>>>>>> actually can see the circle, this is not the desirable
>> >> >>>>>>>> behavior.
>> >> >>>>>>>> I
>> >> >>>>>>>> want to have the circle resize along with the zoom level, just
>> >> >>>>>>>> like
>> >> >>>>>>>> pins do.
>> >> >>>>>>>>
>> >> >>>>>>>> So I have also tried to use a custom image on
>> >> >>>>>>>> MKPinAnnotationView
>> >> >>>>>>>> and
>> >> >>>>>>>> on MKAnnotationView, neither of them seems to show my custom
>> >> >>>>>>>> image.
>> >> >>>>>>>> The normal pin image shows when using MKPinAnnotationView. I
>> >> >>>>>>>> have
>> >> >>>>>>>> put
>> >> >>>>>>>> the pin image in the root of my project and referencing it
>> >> >>>>>>>> with
>> >> >>>>>>>> the
>> >> >>>>>>>> path "pin.png" (the name of the image is actually pin.png).
>> >> >>>>>>>>
>> >> >>>>>>>> So maybe someone here can help me find out what is wrong, or
>> >> >>>>>>>> provide
>> >> >>>>>>>> me with some examples on how to do this? I would prefer if I
>> >> >>>>>>>> could
>> >> >>>>>>>> use
>> >> >>>>>>>> MKCircle and just choose the color. But using images could be
>> >> >>>>>>>> a
>> >> >>>>>>>> solution.
>> >> >>>>>>>>
>> >> >>>>>>>> --
>> >> >>>>>>>> Med Venlig Hilsen / With Best Regards
>> >> >>>>>>>> Tomasz Cielecki
>> >> >>>>>>>> http://ostebaronen.dk
>> >> >>>>>>>> _______________________________________________
>> >> >>>>>>>> MonoTouch mailing list
>> >> >>>>>>>> [email protected]
>> >> >>>>>>>> http://lists.ximian.com/mailman/listinfo/monotouch
>> >> >>>>>>>
>> >> >>>>>>>
>> >> >>>>>>
>> >> >>>>>>
>> >> >>>>>>
>> >> >>>>>> --
>> >> >>>>>> Med Venlig Hilsen / With Best Regards
>> >> >>>>>> Tomasz Cielecki
>> >> >>>>>> http://ostebaronen.dk
>> >> >>>>>
>> >> >>>>>
>> >> >>>>
>> >> >>>>
>> >> >>>>
>> >> >>>> --
>> >> >>>> Med Venlig Hilsen / With Best Regards
>> >> >>>> Tomasz Cielecki
>> >> >>>> http://ostebaronen.dk
>> >> >>>
>> >> >>>
>> >> >>
>> >> >>
>> >> >>
>> >> >> --
>> >> >> Med Venlig Hilsen / With Best Regards
>> >> >> Tomasz Cielecki
>> >> >> http://ostebaronen.dk
>> >> >
>> >>
>> >>
>> >>
>> >> --
>> >> Med Venlig Hilsen / With Best Regards
>> >> Tomasz Cielecki
>> >> http://ostebaronen.dk
>> >
>> >
>>
>>
>>
>> --
>> Med Venlig Hilsen / With Best Regards
>> Tomasz Cielecki
>> http://ostebaronen.dk
>
>



-- 
Med Venlig Hilsen / With Best Regards
Tomasz Cielecki
http://ostebaronen.dk
_______________________________________________
MonoTouch mailing list
[email protected]
http://lists.ximian.com/mailman/listinfo/monotouch

Reply via email to