31-01-2022, Saat: 12:13
Android, iOS ve her iki platformun base class'ındaki ortak atamalarına bakalım.
Android tarafında:
iOS Tarafında:
Map ortak sınıfında:
Yukarıdaki temel atamalara baktığımızda; marker yönünün Origin (anchor) ve Flat özellikleri ile ilgili olduğunu görüyoruz. Siz her ne kadar set etseniz de durum değişmediğine göre kodlarınızda bir sorun yok demektir.
Embercadero comminity'e bu durumu bildirmekten başka çare görünmüyor.
Android tarafında:
function TAndroidMapView.BuildMarkerOptions(const D: TMapMarkerDescriptor): JMarkerOptions; begin Result := TJMarkerOptions.JavaClass.init.alpha(D.Opacity) .anchor(D.Origin.X, D.Origin.Y) .draggable(D.Draggable) .flat(D.Appearance = TMarkerAppearance.Flat) .position(CoordToLatLng(D.Position)) .rotation(D.Rotation) .snippet(StringToJString(D.Snippet)) .title(StringToJString(D.Title)) .visible(D.Visible); if D.Icon <> nil then Result := Result.icon(CreateBitmapDescriptorFromBitmap(D.Icon)); end;
iOS Tarafında:
function TMapKitMapMarker.AnnotationView: MKAnnotationView; var Pin: MKPinAnnotationView; Image: UIImage; begin if FAnnotationView <> nil then Exit(FAnnotationView); if Descriptor.Icon <> nil then begin Result := TMKAnnotationView.Wrap(TMKAnnotationView.Alloc.initWithAnnotation((FAnnotation as ILocalObject).GetObjectID, nil)); Image := BitmapToUIImage(Descriptor.Icon); Result.setImage(Image); Result.setUserInteractionEnabled(Descriptor.Draggable); Result.setDraggable(Descriptor.Draggable); Result.setCanShowCallout(True); Result.setCenterOffset(CGPointMake(Image.size.width * (Descriptor.Origin.X - 0.5), - Image.size.height * (Descriptor.Origin.Y - 0.5))); end else begin Pin := TMKPinAnnotationView.Wrap(TMKPinAnnotationView.Alloc.initWithAnnotation((FAnnotation as ILocalObject).GetObjectID, nil)); Pin.setUserInteractionEnabled(Descriptor.Draggable); Pin.setCanShowCallout(True); Pin.setDraggable(Descriptor.Draggable); Pin.setUserInteractionEnabled(Descriptor.Draggable); Result := Pin; end; FAnnotationView := Result; end;
Map ortak sınıfında:
class function TMapMarkerDescriptor.Create(const Position: TMapCoordinate; const Title: string): TMapMarkerDescriptor; begin Result.Position := Position; Result.Title := Title; Result.Opacity := 1; Result.Origin := TPointF.Create(0.5, 1); Result.Snippet := string.Empty; Result.Draggable := False; Result.Visible := True; Result.Appearance := TMarkerAppearance.Flat; Result.Rotation := 0; Result.Icon := nil; end;
Yukarıdaki temel atamalara baktığımızda; marker yönünün Origin (anchor) ve Flat özellikleri ile ilgili olduğunu görüyoruz. Siz her ne kadar set etseniz de durum değişmediğine göre kodlarınızda bir sorun yok demektir.
Embercadero comminity'e bu durumu bildirmekten başka çare görünmüyor.
Begin : = end / 2;

