diff options
author | Jason Smith <jason.smith@xamarin.com> | 2016-03-22 13:02:25 -0700 |
---|---|---|
committer | Jason Smith <jason.smith@xamarin.com> | 2016-03-22 16:13:41 -0700 |
commit | 17fdde66d94155fc62a034fa6658995bef6fd6e5 (patch) | |
tree | b5e5073a2a7b15cdbe826faa5c763e270a505729 /Xamarin.Forms.Maps.iOS | |
download | xamarin-forms-17fdde66d94155fc62a034fa6658995bef6fd6e5.tar.gz xamarin-forms-17fdde66d94155fc62a034fa6658995bef6fd6e5.tar.bz2 xamarin-forms-17fdde66d94155fc62a034fa6658995bef6fd6e5.zip |
Initial import
Diffstat (limited to 'Xamarin.Forms.Maps.iOS')
-rw-r--r-- | Xamarin.Forms.Maps.iOS/FormsMaps.cs | 34 | ||||
-rw-r--r-- | Xamarin.Forms.Maps.iOS/GeocoderBackend.cs | 61 | ||||
-rw-r--r-- | Xamarin.Forms.Maps.iOS/MapRenderer.cs | 327 | ||||
-rw-r--r-- | Xamarin.Forms.Maps.iOS/Properties/AssemblyInfo.cs | 25 | ||||
-rw-r--r-- | Xamarin.Forms.Maps.iOS/Xamarin.Forms.Maps.iOS.Classic.csproj | 78 | ||||
-rw-r--r-- | Xamarin.Forms.Maps.iOS/Xamarin.Forms.Maps.iOS.csproj | 76 |
6 files changed, 601 insertions, 0 deletions
diff --git a/Xamarin.Forms.Maps.iOS/FormsMaps.cs b/Xamarin.Forms.Maps.iOS/FormsMaps.cs new file mode 100644 index 00000000..91033f78 --- /dev/null +++ b/Xamarin.Forms.Maps.iOS/FormsMaps.cs @@ -0,0 +1,34 @@ +using Xamarin.Forms.Maps.iOS; +#if __UNIFIED__ +using UIKit; + +#else +using MonoTouch.UIKit; +#endif + +namespace Xamarin +{ + public static class FormsMaps + { + static bool s_isInitialized; + static bool? s_isiOs8OrNewer; + + internal static bool IsiOs8OrNewer + { + get + { + if (!s_isiOs8OrNewer.HasValue) + s_isiOs8OrNewer = UIDevice.CurrentDevice.CheckSystemVersion(8, 0); + return s_isiOs8OrNewer.Value; + } + } + + public static void Init() + { + if (s_isInitialized) + return; + GeocoderBackend.Register(); + s_isInitialized = true; + } + } +}
\ No newline at end of file diff --git a/Xamarin.Forms.Maps.iOS/GeocoderBackend.cs b/Xamarin.Forms.Maps.iOS/GeocoderBackend.cs new file mode 100644 index 00000000..42b96457 --- /dev/null +++ b/Xamarin.Forms.Maps.iOS/GeocoderBackend.cs @@ -0,0 +1,61 @@ +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +#if __UNIFIED__ +using CoreLocation; +using AddressBookUI; +#else +using MonoTouch.AddressBookUI; +using MonoTouch.CoreLocation; +#endif +#if __UNIFIED__ +using RectangleF = CoreGraphics.CGRect; +using SizeF = CoreGraphics.CGSize; +using PointF = CoreGraphics.CGPoint; + +#else +using nfloat=global::System.Single; +using nint=global::System.Int32; +using nuint=global::System.UInt32; +#endif + +namespace Xamarin.Forms.Maps.iOS +{ + internal class GeocoderBackend + { + public static void Register() + { + Geocoder.GetPositionsForAddressAsyncFunc = GetPositionsForAddressAsync; + Geocoder.GetAddressesForPositionFuncAsync = GetAddressesForPositionAsync; + } + + static Task<IEnumerable<string>> GetAddressesForPositionAsync(Position position) + { + var location = new CLLocation(position.Latitude, position.Longitude); + var geocoder = new CLGeocoder(); + var source = new TaskCompletionSource<IEnumerable<string>>(); + geocoder.ReverseGeocodeLocation(location, (placemarks, error) => + { + if (placemarks == null) + placemarks = new CLPlacemark[0]; + IEnumerable<string> addresses = placemarks.Select(p => ABAddressFormatting.ToString(p.AddressDictionary, false)); + source.SetResult(addresses); + }); + return source.Task; + } + + static Task<IEnumerable<Position>> GetPositionsForAddressAsync(string address) + { + var geocoder = new CLGeocoder(); + var source = new TaskCompletionSource<IEnumerable<Position>>(); + geocoder.GeocodeAddress(address, (placemarks, error) => + { + if (placemarks == null) + placemarks = new CLPlacemark[0]; + IEnumerable<Position> positions = placemarks.Select(p => new Position(p.Location.Coordinate.Latitude, p.Location.Coordinate.Longitude)); + source.SetResult(positions); + }); + return source.Task; + } + } +}
\ No newline at end of file diff --git a/Xamarin.Forms.Maps.iOS/MapRenderer.cs b/Xamarin.Forms.Maps.iOS/MapRenderer.cs new file mode 100644 index 00000000..aa3bb447 --- /dev/null +++ b/Xamarin.Forms.Maps.iOS/MapRenderer.cs @@ -0,0 +1,327 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Collections.Specialized; +using System.ComponentModel; +using Xamarin.Forms.Platform.iOS; +#if __UNIFIED__ +using UIKit; +using MapKit; +using CoreLocation; +using Foundation; +#else +using MonoTouch.UIKit; +using MonoTouch.Foundation; +using MonoTouch.CoreLocation; +using MonoTouch.MapKit; +using System.Drawing; +#endif +#if __UNIFIED__ +using RectangleF = CoreGraphics.CGRect; +using SizeF = CoreGraphics.CGSize; +using PointF = CoreGraphics.CGPoint; +using ObjCRuntime; + +#else +using nfloat=global::System.Single; +using nint=global::System.Int32; +using nuint=global::System.UInt32; +using MonoTouch.ObjCRuntime; +#endif + +namespace Xamarin.Forms.Maps.iOS +{ + internal class MapDelegate : MKMapViewDelegate + { + // keep references alive, removing this will cause a segfault + static readonly List<object> List = new List<object>(); + readonly Map _map; + UIView _lastTouchedView; + + internal MapDelegate(Map map) + { + _map = map; + } + +#if __UNIFIED__ + public override MKAnnotationView GetViewForAnnotation(MKMapView mapView, IMKAnnotation annotation) +#else + public override MKAnnotationView GetViewForAnnotation (MKMapView mapView, NSObject annotation) +#endif + { + MKPinAnnotationView mapPin = null; + + // https://bugzilla.xamarin.com/show_bug.cgi?id=26416 + var userLocationAnnotation = Runtime.GetNSObject(annotation.Handle) as MKUserLocation; + if (userLocationAnnotation != null) + return null; + + const string defaultPinId = "defaultPin"; + mapPin = (MKPinAnnotationView)mapView.DequeueReusableAnnotation(defaultPinId); + if (mapPin == null) + { + mapPin = new MKPinAnnotationView(annotation, defaultPinId); + mapPin.CanShowCallout = true; + } + + mapPin.Annotation = annotation; + AttachGestureToPin(mapPin, annotation); + + return mapPin; + } + +#if __UNIFIED__ + void AttachGestureToPin(MKPinAnnotationView mapPin, IMKAnnotation annotation) +#else + void AttachGestureToPin (MKPinAnnotationView mapPin, NSObject annotation) +#endif + { + UIGestureRecognizer[] recognizers = mapPin.GestureRecognizers; + + if (recognizers != null) + { + foreach (UIGestureRecognizer r in recognizers) + { + mapPin.RemoveGestureRecognizer(r); + } + } + + Action<UITapGestureRecognizer> action = g => OnClick(annotation, g); + var recognizer = new UITapGestureRecognizer(action) { ShouldReceiveTouch = (gestureRecognizer, touch) => + { + _lastTouchedView = touch.View; + return true; + } }; + List.Add(action); + List.Add(recognizer); + mapPin.AddGestureRecognizer(recognizer); + } + + void OnClick(object annotationObject, UITapGestureRecognizer recognizer) + { + // https://bugzilla.xamarin.com/show_bug.cgi?id=26416 + NSObject annotation = Runtime.GetNSObject(((IMKAnnotation)annotationObject).Handle); + if (annotation == null) + return; + + // lookup pin + Pin targetPin = null; + for (var i = 0; i < _map.Pins.Count; i++) + { + Pin pin = _map.Pins[i]; + object target = pin.Id; + if (target != annotation) + continue; + + targetPin = pin; + break; + } + + // pin not found. Must have been activated outside of forms + if (targetPin == null) + return; + + // if the tap happened on the annotation view itself, skip because this is what happens when the callout is showing + // when the callout is already visible the tap comes in on a different view + if (_lastTouchedView is MKAnnotationView) + return; + + targetPin.SendTap(); + } + } + + public class MapRenderer : ViewRenderer + { + long _handle = 0; + CLLocationManager _locationManager; + + public override SizeRequest GetDesiredSize(double widthConstraint, double heightConstraint) + { + return Control.GetSizeRequest(widthConstraint, heightConstraint); + } + + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (Element != null) + { + var mapModel = (Map)Element; + MessagingCenter.Unsubscribe<Map, MapSpan>(this, "MapMoveToRegion"); + ((ObservableCollection<Pin>)mapModel.Pins).CollectionChanged -= OnCollectionChanged; + } + + var mkMapView = (MKMapView)Control; + mkMapView.RegionChanged -= MkMapViewOnRegionChanged; + + if (_locationManager != null) + { + _locationManager.Dispose(); + _locationManager = null; + } + } + + base.Dispose(disposing); + } + + protected override void OnElementChanged(ElementChangedEventArgs<View> e) + { + base.OnElementChanged(e); + + if (e.OldElement != null) + { + var mapModel = (Map)e.OldElement; + MessagingCenter.Unsubscribe<Map, MapSpan>(this, "MapMoveToRegion"); + ((ObservableCollection<Pin>)mapModel.Pins).CollectionChanged -= OnCollectionChanged; + } + + if (e.NewElement != null) + { + var mapModel = (Map)e.NewElement; + + if (Control == null) + { + SetNativeControl(new MKMapView(RectangleF.Empty)); + var mkMapView = (MKMapView)Control; + var mapDelegate = new MapDelegate(mapModel); + mkMapView.GetViewForAnnotation = mapDelegate.GetViewForAnnotation; + mkMapView.RegionChanged += MkMapViewOnRegionChanged; + } + + MessagingCenter.Subscribe<Map, MapSpan>(this, "MapMoveToRegion", (s, a) => MoveToRegion(a), mapModel); + if (mapModel.LastMoveToRegion != null) + MoveToRegion(mapModel.LastMoveToRegion, false); + + UpdateMapType(); + UpdateIsShowingUser(); + UpdateHasScrollEnabled(); + UpdateHasZoomEnabled(); + + ((ObservableCollection<Pin>)mapModel.Pins).CollectionChanged += OnCollectionChanged; + + OnCollectionChanged(((Map)Element).Pins, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset)); + } + } + + protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) + { + base.OnElementPropertyChanged(sender, e); + + if (e.PropertyName == Map.MapTypeProperty.PropertyName) + UpdateMapType(); + else if (e.PropertyName == Map.IsShowingUserProperty.PropertyName) + UpdateIsShowingUser(); + else if (e.PropertyName == Map.HasScrollEnabledProperty.PropertyName) + UpdateHasScrollEnabled(); + else if (e.PropertyName == Map.HasZoomEnabledProperty.PropertyName) + UpdateHasZoomEnabled(); + } + + void AddPins(IList pins) + { + foreach (Pin pin in pins) + { + var annotation = new MKPointAnnotation { Title = pin.Label, Subtitle = pin.Address ?? "" }; + + pin.Id = annotation; +#if __UNIFIED__ + annotation.SetCoordinate(new CLLocationCoordinate2D(pin.Position.Latitude, pin.Position.Longitude)); +#else + annotation.Coordinate = new CLLocationCoordinate2D (pin.Position.Latitude, pin.Position.Longitude); +#endif + ((MKMapView)Control).AddAnnotation(annotation); + } + } + + void MkMapViewOnRegionChanged(object sender, MKMapViewChangeEventArgs mkMapViewChangeEventArgs) + { + if (Element == null) + return; + + var mapModel = (Map)Element; + var mkMapView = (MKMapView)Control; + + mapModel.VisibleRegion = new MapSpan(new Position(mkMapView.Region.Center.Latitude, mkMapView.Region.Center.Longitude), mkMapView.Region.Span.LatitudeDelta, mkMapView.Region.Span.LongitudeDelta); + } + + void MoveToRegion(MapSpan mapSpan, bool animated = true) + { + Position center = mapSpan.Center; + var mapRegion = new MKCoordinateRegion(new CLLocationCoordinate2D(center.Latitude, center.Longitude), new MKCoordinateSpan(mapSpan.LatitudeDegrees, mapSpan.LongitudeDegrees)); + ((MKMapView)Control).SetRegion(mapRegion, animated); + } + + void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs notifyCollectionChangedEventArgs) + { + switch (notifyCollectionChangedEventArgs.Action) + { + case NotifyCollectionChangedAction.Add: + AddPins(notifyCollectionChangedEventArgs.NewItems); + break; + case NotifyCollectionChangedAction.Remove: + RemovePins(notifyCollectionChangedEventArgs.OldItems); + break; + case NotifyCollectionChangedAction.Replace: + RemovePins(notifyCollectionChangedEventArgs.OldItems); + AddPins(notifyCollectionChangedEventArgs.NewItems); + break; + case NotifyCollectionChangedAction.Reset: + var mapView = (MKMapView)Control; + mapView.RemoveAnnotations(mapView.Annotations); + AddPins((IList)(Element as Map).Pins); + break; + case NotifyCollectionChangedAction.Move: + //do nothing + break; + } + } + + void RemovePins(IList pins) + { + foreach (object pin in pins) +#if __UNIFIED__ + ((MKMapView)Control).RemoveAnnotation((IMKAnnotation)((Pin)pin).Id); +#else + ((MKMapView)Control).RemoveAnnotation ((NSObject)((Pin)pin).Id); +#endif + } + + void UpdateHasScrollEnabled() + { + ((MKMapView)Control).ScrollEnabled = ((Map)Element).HasScrollEnabled; + } + + void UpdateHasZoomEnabled() + { + ((MKMapView)Control).ZoomEnabled = ((Map)Element).HasZoomEnabled; + } + + void UpdateIsShowingUser() + { + if (FormsMaps.IsiOs8OrNewer && ((Map)Element).IsShowingUser) + { + _locationManager = new CLLocationManager(); + _locationManager.RequestWhenInUseAuthorization(); + } + + ((MKMapView)Control).ShowsUserLocation = ((Map)Element).IsShowingUser; + } + + void UpdateMapType() + { + switch (((Map)Element).MapType) + { + case MapType.Street: + ((MKMapView)Control).MapType = MKMapType.Standard; + break; + case MapType.Satellite: + ((MKMapView)Control).MapType = MKMapType.Satellite; + break; + case MapType.Hybrid: + ((MKMapView)Control).MapType = MKMapType.Hybrid; + break; + } + } + } +}
\ No newline at end of file diff --git a/Xamarin.Forms.Maps.iOS/Properties/AssemblyInfo.cs b/Xamarin.Forms.Maps.iOS/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..18b4256f --- /dev/null +++ b/Xamarin.Forms.Maps.iOS/Properties/AssemblyInfo.cs @@ -0,0 +1,25 @@ +using System.Reflection; +using System.Runtime.InteropServices; +using Xamarin.Forms; +using Xamarin.Forms.Maps; +using Xamarin.Forms.Maps.iOS; +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. + +[assembly: AssemblyTitle("Xamarin.Forms.Maps.iOS")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. + +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM + +[assembly: Guid("4a5d02cd-7350-46b6-bbd5-204b727c67c9")] +[assembly: ExportRenderer(typeof(Map), typeof(MapRenderer))] +[assembly: Preserve]
\ No newline at end of file diff --git a/Xamarin.Forms.Maps.iOS/Xamarin.Forms.Maps.iOS.Classic.csproj b/Xamarin.Forms.Maps.iOS/Xamarin.Forms.Maps.iOS.Classic.csproj new file mode 100644 index 00000000..d26b8649 --- /dev/null +++ b/Xamarin.Forms.Maps.iOS/Xamarin.Forms.Maps.iOS.Classic.csproj @@ -0,0 +1,78 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">iPhoneSimulator</Platform> + <ProductVersion>8.0.30703</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{CA10FACD-22AB-463F-A20E-379C212B0858}</ProjectGuid> + <ProjectTypeGuids>{6BC8ED88-2882-458C-8E55-DFD12B67127B};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> + <OutputType>Library</OutputType> + <RootNamespace>Xamarin.Forms.Maps.iOS</RootNamespace> + <IPhoneResourcePrefix>Resources</IPhoneResourcePrefix> + <AssemblyName>Xamarin.Forms.Maps.iOS.Classic</AssemblyName> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>classic_bin\iPhoneSimulator\Debug</OutputPath> + <BaseIntermediateOutputPath>classic_obj\</BaseIntermediateOutputPath> + <DefineConstants>DEBUG</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + <ConsolePause>false</ConsolePause> + <MtouchDebug>true</MtouchDebug> + <CodesignKey>iPhone Developer</CodesignKey> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>none</DebugType> + <Optimize>true</Optimize> + <OutputPath>classic_bin\iPhoneSimulator\Release</OutputPath> + <BaseIntermediateOutputPath>classic_obj\</BaseIntermediateOutputPath> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + <ConsolePause>false</ConsolePause> + <CodesignKey>iPhone Developer</CodesignKey> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Turkey|AnyCPU'"> + <DebugSymbols>true</DebugSymbols> + <OutputPath>bin\Turkey\</OutputPath> + <DefineConstants>__MOBILE__;__IOS__;DEBUG</DefineConstants> + <DebugType>full</DebugType> + <PlatformTarget>AnyCPU</PlatformTarget> + <UseVSHostingProcess>false</UseVSHostingProcess> + <ErrorReport>prompt</ErrorReport> + <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet> + </PropertyGroup> + <ItemGroup> + <Compile Include="..\Xamarin.Forms.Core\Properties\GlobalAssemblyInfo.cs"> + <Link>Properties\GlobalAssemblyInfo.cs</Link> + </Compile> + <Compile Include="MapRenderer.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + <Compile Include="FormsMaps.cs" /> + <Compile Include="GeocoderBackend.cs" /> + </ItemGroup> + <ItemGroup> + <Reference Include="System" /> + <Reference Include="System.Xml" /> + <Reference Include="System.Core" /> + <Reference Include="monotouch" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\Xamarin.Forms.Core\Xamarin.Forms.Core.csproj"> + <Project>{57b8b73d-c3b5-4c42-869e-7b2f17d354ac}</Project> + <Name>Xamarin.Forms.Core</Name> + </ProjectReference> + <ProjectReference Include="..\Xamarin.Forms.Maps\Xamarin.Forms.Maps.csproj"> + <Project>{7D13BAC2-C6A4-416A-B07E-C169B199E52B}</Project> + <Name>Xamarin.Forms.Maps</Name> + </ProjectReference> + <ProjectReference Include="..\Xamarin.Forms.Platform.iOS\Xamarin.Forms.Platform.iOS.Classic.csproj"> + <Project>{4a47b5df-ddfc-476b-ac41-5105ff3b9b8b}</Project> + <Name>Xamarin.Forms.Platform.iOS.Classic</Name> + </ProjectReference> + </ItemGroup> + <Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.MonoTouch.CSharp.targets" /> +</Project> diff --git a/Xamarin.Forms.Maps.iOS/Xamarin.Forms.Maps.iOS.csproj b/Xamarin.Forms.Maps.iOS/Xamarin.Forms.Maps.iOS.csproj new file mode 100644 index 00000000..a50911ba --- /dev/null +++ b/Xamarin.Forms.Maps.iOS/Xamarin.Forms.Maps.iOS.csproj @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">iPhoneSimulator</Platform> + <ProductVersion>8.0.30703</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}</ProjectGuid> + <ProjectTypeGuids>{FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> + <OutputType>Library</OutputType> + <RootNamespace>Xamarin.Forms.Maps.iOS</RootNamespace> + <IPhoneResourcePrefix>Resources</IPhoneResourcePrefix> + <AssemblyName>Xamarin.Forms.Maps.iOS</AssemblyName> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>bin\iPhoneSimulator\Debug</OutputPath> + <DefineConstants>DEBUG</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + <ConsolePause>false</ConsolePause> + <MtouchDebug>true</MtouchDebug> + <CodesignKey>iPhone Developer</CodesignKey> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>none</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\iPhoneSimulator\Release</OutputPath> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + <ConsolePause>false</ConsolePause> + <CodesignKey>iPhone Developer</CodesignKey> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Turkey|AnyCPU'"> + <DebugSymbols>true</DebugSymbols> + <OutputPath>bin\Turkey\</OutputPath> + <DefineConstants>__UNIFIED__;__MOBILE__;__IOS__;DEBUG</DefineConstants> + <DebugType>full</DebugType> + <PlatformTarget>AnyCPU</PlatformTarget> + <UseVSHostingProcess>false</UseVSHostingProcess> + <ErrorReport>prompt</ErrorReport> + <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet> + </PropertyGroup> + <ItemGroup> + <Compile Include="..\Xamarin.Forms.Core\Properties\GlobalAssemblyInfo.cs"> + <Link>Properties\GlobalAssemblyInfo.cs</Link> + </Compile> + <Compile Include="MapRenderer.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + <Compile Include="FormsMaps.cs" /> + <Compile Include="GeocoderBackend.cs" /> + </ItemGroup> + <ItemGroup> + <Reference Include="Xamarin.iOS" /> + <Reference Include="System" /> + <Reference Include="System.Xml" /> + <Reference Include="System.Core" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\Xamarin.Forms.Core\Xamarin.Forms.Core.csproj"> + <Project>{57b8b73d-c3b5-4c42-869e-7b2f17d354ac}</Project> + <Name>Xamarin.Forms.Core</Name> + </ProjectReference> + <ProjectReference Include="..\Xamarin.Forms.Maps\Xamarin.Forms.Maps.csproj"> + <Project>{7D13BAC2-C6A4-416A-B07E-C169B199E52B}</Project> + <Name>Xamarin.Forms.Maps</Name> + </ProjectReference> + <ProjectReference Include="..\Xamarin.Forms.Platform.iOS\Xamarin.Forms.Platform.iOS.csproj"> + <Project>{271193c1-6e7c-429c-a36d-3f1be5267231}</Project> + <Name>Xamarin.Forms.Platform.iOS</Name> + </ProjectReference> + </ItemGroup> + <Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.CSharp.targets" /> +</Project> |