public void ActivateMapPin() { MapPinData pinData = null; foreach (var item in AppData.Discount.MapPinCollection) { if (item.Id == AppData.Discount.ActiveMapPinId) { pinData = item; break; } } AppData.Discount.ActiveMapPinId = ""; if (pinData == null) { return; } (ViewPage as MainPage).MapLocation.MoveToRegion(MapSpan.FromCenterAndRadius( new Position(pinData.Latitude, pinData.Longitude), Distance.FromKilometers(2))); (ViewPage as MainPage).MapLocation.ShowPinDetailInfo(pinData.Id); }
void pinMarker_Tap(object sender, System.Windows.Input.GestureEventArgs e) { var map = Control; var mapTile = (MapTile)Element; PinMarker pinMarker = sender as PinMarker; tapMarker = pinMarker; MapPinData data = pinMarker.DataContext as MapPinData; var centerLocation = new System.Device.Location.GeoCoordinate(Math.Round(map.Center.Latitude, 4), Math.Round(map.Center.Longitude, 4)); var pinLocation = new System.Device.Location.GeoCoordinate(Math.Round(data.Latitude, 4), Math.Round(data.Longitude, 4)); //map.Center = pinLocation; //mapTile.ShowDetailInfo(data.Id); if (centerLocation == pinLocation) { mapTile.ShowPinDetailInfo(data.Id); } else { map.ViewChanged += map_ViewChanged; map.SetView(pinLocation, map.ZoomLevel, MapAnimationKind.Linear); } }
async public void ShowPinDetailInfo(string id) { MapPinData cutPinData = null; foreach (var item in PinList) { if (item.Id == id) { cutPinData = item; break; } } if (cutPinData == null) { return; } _isShowDetailInfo = true; if (Context != null) { mapPinDetail.DiscountCaption = Context.TxtDiscount; mapPinDetail.DistanceIcon = Context.ImgDistance; mapPinDetail.DistanceCaption = Context.TxtDistanceScaleValue; mapPinDetail.DetailIcon = Context.ImgDetail; } string categoryName = ""; Color categoryColor = Color.Black; if (CategoryHelper.CategoryList.ContainsKey(cutPinData.PrimaryCategory.TypeCode)) { var categoryParam = CategoryHelper.CategoryList[cutPinData.PrimaryCategory.TypeCode]; categoryName = categoryParam.Name; categoryColor = categoryParam.ColorTheme; } mapPinDetail.DiscountValue = cutPinData.Discount + "%"; mapPinDetail.CategoryName = CategoryHelper.GetName(cutPinData.PrimaryCategory.TypeCode); mapPinDetail.CategoryColor = CategoryHelper.GetColorTheme(cutPinData.PrimaryCategory.TypeCode); mapPinDetail.Title = cutPinData.Name + "."; mapPinDetail.DistanceValue = cutPinData.Distance; await mapPinDetail.Show(); var tapPinDetail = new TapGestureRecognizer(); tapPinDetail.Tapped += async(sender, e) => { await CloseDetailInfo(); OnClickPinDetail(new MapPinDataEventArgs(cutPinData)); }; mapPinDetail.TapPinDetail = tapPinDetail; }
private static Task <List <MapPinData> > LoadMapData( IEnumerable <Discount> discountsTable, IEnumerable <Contact> contactsTable, IReadOnlyCollection <DiscountCategory> discountCategoriesTable, IReadOnlyCollection <DiscountsStrings> discountsStringsTable, IReadOnlyCollection <LangString> langStringsTable) { var result = new List <MapPinData>(); var contactList = contactsTable.Join(discountsTable, i => i.DiscountId, i => i.Id, (c, d) => new { d.Id, c.DocumentId, PartnerId = d.DocumentId, c.Latitude, c.Longitude, d.PercentValue, d.DiscountType }); foreach (var contactRec in contactList) { var categories = discountCategoriesTable.Where(i => i.DiscountId == contactRec.Id) .Join(AppData.Discount.CategoryCollection, i => i.CategoryId, i => i.DocumentId, (dc, c) => c) .ToList(); var mapPinData = new MapPinData { Id = contactRec.DocumentId, PartnerId = contactRec.PartnerId, Discount = contactRec.PercentValue, DiscountType = contactRec.DiscountType.GetDiscountTypeName(), Latitude = contactRec.Latitude, Longitude = contactRec.Longitude, CategoryList = categories, PrimaryCategory = categories.FirstOrDefault() }; var nameList = discountsStringsTable .Where(i => i.OwnerId == contactRec.Id && i.Appointment == StrAppointmentTitle) .Join(langStringsTable, i => i.LangStringId, i => i.Id, (ds, ls) => ls); foreach (var nameRec in nameList) { mapPinData.SetName(nameRec.LanguageCode, nameRec.Text); } result.Add(mapPinData); } return(Task.FromResult(result)); }
public ClusterItem(MapPinData pinItem) { Data = pinItem; Position = new CLLocationCoordinate2D(pinItem.Latitude, pinItem.Longitude); Snippet = pinItem.Id; Title = pinItem.Name; var imageBytes = pinItem.PrimaryCategory.GetIconThemeBytes(); Icon = UIImage.LoadFromData(NSData.FromArray(imageBytes), UIScreen.MainScreen.Scale); }
public ClusterItem(MapPinData pinItem) { Data = pinItem; Position = new LatLng(pinItem.Latitude, pinItem.Longitude); Snippet = pinItem.Id; Title = pinItem.Name; var imageBytes = pinItem.PrimaryCategory.GetIconThemeBytes(); var icon = BitmapFactory.DecodeByteArray(imageBytes, 0, imageBytes.Length); Icon = BitmapDescriptorFactory.FromBitmap(icon); }
void map_ViewChanged(object sender, MapViewChangedEventArgs e) { (sender as Map).ViewChanged -= map_ViewChanged; var map = Control; var mapTile = (MapTile)Element; MapPinData data = tapMarker.DataContext as MapPinData; var centerLocation = new System.Device.Location.GeoCoordinate(Math.Round(map.Center.Latitude, 4), Math.Round(map.Center.Longitude, 4)); var pinLocation = new System.Device.Location.GeoCoordinate(Math.Round(data.Latitude, 4), Math.Round(data.Longitude, 4)); if (centerLocation == pinLocation) { mapTile.ShowPinDetailInfo(data.Id); } }
public PinMarker(MapPinData pinData) { if (pinData.PrimaryCategory != null) { System.Windows.Controls.Image imgPin = new System.Windows.Controls.Image(); var categoryParam = CategoryHelper.CategoryList[pinData.PrimaryCategory.TypeCode]; BitmapImage bmp = new BitmapImage(new Uri(categoryParam.Icon, UriKind.Relative)); imgPin.Source = bmp; //imgPin.Width = 60; //imgPin.Height = 60; Content = imgPin; DataContext = pinData; GeoCoordinate = new System.Device.Location.GeoCoordinate(pinData.Latitude, pinData.Longitude); PositionOrigin = new System.Windows.Point(0.0, 0.0); } }
async public void MapLocation_ClickPinDetail(object sender, MapPinDataEventArgs e) { MapPinData pinData = e.PinData; DiscountData discountData = AppData.Discount.DiscountCollection.Find(item => { return(item.DocumentId == pinData.PartnerId); }); if (discountData != null) { try { IsLoadActivity = true; await AppData.Discount.LoadFullDescription(discountData); } finally { IsLoadActivity = false; } await ViewPage.Navigation.PushAsync(new DiscountDetailPage(discountData.DocumentId), true); } }
public void LoadMapData() { AppData.Discount.MapPinCollection.Clear(); var contactList = from co in database.Table <Contact>() from d in database.Table <Discount>() where co.DiscountId == d.Id select new { d.Id, DocumentId = co.DocumentId, PartnerId = d.DocumentId, co.Latitude, co.Longitude, d.PercentValue, }; foreach (var contactRec in contactList) { MapPinData mapPinData = new MapPinData(); mapPinData.Id = contactRec.DocumentId; mapPinData.PartnerId = contactRec.PartnerId; mapPinData.Discount = contactRec.PercentValue; mapPinData.Latitude = contactRec.Latitude; mapPinData.Longitude = contactRec.Longitude; var categoryList = from c in database.Table <Categorie>() where c.DiscountId == contactRec.Id select c; foreach (var categoryrec in categoryList) { mapPinData.CategorieList.Add(new CategorieData { TypeCode = categoryrec.TypeCode }); } if (mapPinData.CategorieList.Count > 0) { mapPinData.PrimaryCategory = mapPinData.CategorieList[0]; } else { mapPinData.PrimaryCategory = new CategorieData { TypeCode = -1 } }; var nameList = (from ds in database.Table <DiscountsStrings>() from ls in database.Table <LangString>() where ds.LangStringId == ls.Id where ds.OwnerId == contactRec.Id where ds.Appointment == StrAppointmentTitle select new { ls.Text, ls.LanguageCode }).ToList(); foreach (var nameRec in nameList) { mapPinData.SetName(nameRec.LanguageCode, nameRec.Text); } AppData.Discount.MapPinCollection.Add(mapPinData); } }
public MapPinDataEventArgs(MapPinData pinData) { PinData = pinData; }