7
votes

Gmap .net hors ligne

Je développe une application à l'aide de GMAP en C # (grande API, BTW), de ne pas confondre avec Google-Map API, et j'ai fait des choses vraiment cool et utiles depuis.

Mon problème est que certains de mes clients n'auront pas de connexion Internet, et c'est pourquoi j'ai besoin de pouvoir afficher l'arrière-plan (la carte) hors ligne. J'avais l'habitude d'utiliser la propriété gmap.net.accessmode.serverandcache; pour obtenir mes données sur le serveur, et je voudrais maintenant pouvoir utiliser gmap.net.accessmode.cachéonly < / code> avec un cache complet.

Les laisser charger le cache avec une connexion pour préparer une utilisation hors connexion n'est pas une option, les PC ne seront jamais connectés à Internet. Après quelques recherches, j'ai appris OpenStreetMap est la seule carte open source qui me permettrait d'utiliser leur carte gratuitement (et c'est bon car ils ont de très bonnes cartes). J'ai téléchargé une carte de 20 Go d'Europe, mais je ne sais pas comment le spécifier comme le cache (je sais comment localiser le dossier de cache).

La plupart du temps, mes recherches Google m'ont montré que des gens essayant de créer un serveur SQLite virtuel avec toutes les tuiles de la carte dans une DB accessible via localhost, mais honnêtement, je pense que c'est très complexe et je voudrais savoir si quelqu'un a Une idée de me permettre d'utiliser ces cartes hors ligne ou un lien pour le Doc de cette API, impossible à trouver sur le net (j'ai trouvé les sources, mais presque aucun commentaire ni aucune explication).

Merci d'avance et désolé pour mon mauvais anglais.

Réponses en français Bienvenues.


1 commentaires

"Certains de mes clients n'auront pas de connexion Internet". Ils ne peuvent pas non plus accéder à l'intranet? S'ils peuvent accéder à l'intranet, vous pouvez configurer votre propre serveur de tuiles OpenStreetMap.


3 Réponses :


3
votes

Vous pouvez créer un programme séparé pour préfetcher des carreaux pour une utilisation hors connexion. Ou utilisez le programme GMAP Net Demo ( https://github.com/radioman/ GreatMaps / Arbre / Master / Demo.WindowsPresentation )

Le code ci-dessous est pour une touche Appuyez sur une fois que vous avez sélectionné une zone en utilisant un premier bouton Alt + Mouse. P>

        RectLatLng area = mapView.SelectedArea;

        if (!area.IsEmpty)
        {
            for (int i = (int)mapView.Zoom; i <= mapView.MaxZoom; i++)
            {
                TilePrefetcher obj = new TilePrefetcher();
                obj.Title = "Prefetching Tiles";
                obj.Icon = this.Icon;
                obj.Owner = this;
                obj.ShowCompleteMessage = false;
                obj.Start(area, i, mapView.MapProvider, 100);
            }

            DialogResult = true;
            Close();
        }
        else
        {
            MessageBox.Show("No Area Chosen", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
        }


0 commentaires

0
votes

Utiliser gmap.cachelocation = @ "c: \ users \ xxx \ bureau \"; pour spécifier l'emplacement du cache.

Copiez simplement que le cache sur une machine différente dans le même répertoire fonctionnera.

Pour mettre en cache les données cartographiques, consultez mon github https://github.com/williamwdu/gmap. NetChacher

Le répertoire de cache ressemblera à ce Tiledbv5 \ fr \ data.gmdb


0 commentaires

0
votes

Faites attention à ce que le fournisseur de la carte que vous avez téléchargé soit le même fournisseur que vous avez utilisé dans votre code. EQ: gmap.net.mapproviders.gmapproviders.openstreetMap


0 commentaires