public void GetElement(int elementId, OnElementLoaded onElementLoaded) { _onElementLoaded = onElementLoaded; var element = DomainLogic.DB.SqlConn().Table <Element>().Where(p => p.Id == elementId).FirstOrDefault(); SetupElement(ref element); _onElementLoaded(element); }
private IObservable <int> Get(MapQuery query, int tag, OnElementLoaded elementLoadedHandler, OnError errorHandler) { _trace.Debug(TraceCategory, "Search elements"); WithCancelToken(new CancellationToken(), (cancelTokenHandle) => getDataByText( tag, query.NotTerms, query.AndTerms, query.OrTerms, query.BoundingBox.MinPoint.Latitude, query.BoundingBox.MinPoint.Longitude, query.BoundingBox.MaxPoint.Latitude, query.BoundingBox.MaxPoint.Longitude, query.LodRange.Minimum, query.LodRange.Maximum, elementLoadedHandler, errorHandler, cancelTokenHandle.AddrOfPinnedObject()) ); return(Observable.Return(100)); }
/// <summary> Loads tile. </summary> /// <param name="tile"> Tile to load. </param> /// <param name="onMeshBuilt"> Mesh callback. </param> /// <param name="onElementLoaded"> Element callback. </param> /// <param name="onError"> Error callback. </param> /// <param name="pathResolver"> Path resolver. </param> public static void LoadTile(Tile tile, OnMeshBuilt onMeshBuilt, OnElementLoaded onElementLoaded, OnError onError, IPathResolver pathResolver) { var stylePath = pathResolver.Resolve(tile.Stylesheet.Path); var quadKey = tile.QuadKey; var cancelTokenHandle = GCHandle.Alloc(tile.CancelationToken, GCHandleType.Pinned); loadQuadKey(tile.GetHashCode(), stylePath, quadKey.TileX, quadKey.TileY, quadKey.LevelOfDetail, (int)tile.ElevationType, onMeshBuilt, onElementLoaded, onError, cancelTokenHandle.AddrOfPinnedObject()); cancelTokenHandle.Free(); }
/// <summary> /// 获取并创建WPF的UI元素 /// </summary> private void SetUIElement() { UIElementName = GetType().Name; UIElementName = UIElementName.Replace("Vm_", ""); //去除命名规范的前缀 UIElementName = UIElementName.Replace("`1", ""); //去除泛型的特定标识 if (UIElementName.StartsWith("Window")) { UIElementName = UIElementName.TrimStart("Window".ToCharArray()); UIElement = Get <Window>(); (UIElement as Window).Closing += delegate(object sender, CancelEventArgs e) { OnElementClosing?.Invoke(sender, e); }; } else if (UIElementName.StartsWith("Page")) { UIElementName = UIElementName.TrimStart("Page".ToCharArray()); UIElement = Get <Page>(); } else if (UIElementName.StartsWith("UC")) { UIElementName = UIElementName.TrimStart("UC".ToCharArray()); UIElement = Get <UserControl>(); } else { throw new FrameworkException(103, string.Format("元素[{0}]不符合命名规范!", UIElementName)); } UIElement.Loaded += delegate(object sender, RoutedEventArgs e) { OnElementLoaded?.Invoke(sender, e); }; UIElement.Unloaded += delegate(object sender, RoutedEventArgs e) { OnElementUnLoaded?.Invoke(sender, e); }; }
private static extern void loadQuadKey(string stylePath, int tileX, int tileY, int levelOfDetails, OnMeshBuilt meshBuiltHandler, OnElementLoaded elementLoadedHandler, OnError errorHandler);
/// <summary> Loads quadkey. </summary> /// <param name="stylePath"> Stylesheet path. </param> /// <param name="quadKey"> QuadKey</param> /// <param name="onMeshBuilt"></param> /// <param name="onElementLoaded"></param> /// <param name="onError"></param> public static void LoadQuadKey(string stylePath, QuadKey quadKey, OnMeshBuilt onMeshBuilt, OnElementLoaded onElementLoaded, OnError onError) { loadQuadKey(stylePath, quadKey.TileX, quadKey.TileY, quadKey.LevelOfDetail, onMeshBuilt, onElementLoaded, onError); }
private static extern void loadQuadKey(int tag, string stylePath, int tileX, int tileY, int levelOfDetails, int eleDataType, OnMeshBuilt meshBuiltHandler, OnElementLoaded elementLoadedHandler, OnError errorHandler, IntPtr cancelToken);
private IObservable <int> Get(Tile tile, int tag, OnMeshBuilt meshBuiltHandler, OnElementLoaded elementLoadedHandler, OnError errorHandler) { _trace.Debug(TraceCategory, "Get tile {0}", tile.ToString()); var stylePath = RegisterStylesheet(tile.Stylesheet); var quadKey = tile.QuadKey; var cancelTokenHandle = GCHandle.Alloc(tile.CancelationToken, GCHandleType.Pinned); loadQuadKey(tag, stylePath, quadKey.TileX, quadKey.TileY, quadKey.LevelOfDetail, (int)tile.ElevationType, meshBuiltHandler, elementLoadedHandler, errorHandler, cancelTokenHandle.AddrOfPinnedObject()); cancelTokenHandle.Free(); return(Observable.Return(100)); }
private static extern void getDataByText(int tag, string notTerms, string andTerms, string orTerms, double minLatitude, double minLogitude, double maxLatitude, double maxLogitude, int startLod, int endLod, OnElementLoaded elementLoadedHandler, OnError errorHandler, IntPtr cancelToken);