Как добавить настраиваемый маркер Carto Map через Carto Map Moblie SDK.UWP?

Я внедряю приложение универсальной платформы Windows (UWP) и использую Carto Map Mobile SDK (UWP). Однако я не знаю, как программно добавить изображение .png в качестве маркера карты. Вот мой код:

                /// Preparation - create layer and datasource

            // projection will be needed later
            Projection projection = map.Options.BaseProjection;

            // Initialize an local data source - a bucket for your objects created in code
            LocalVectorDataSource datasource = new LocalVectorDataSource(projection);

            // Initialize a vector layer with the previous data source
            VectorLayer layer = new VectorLayer(datasource);

            // Add layer to map
            map.Layers.Add(layer);



            /// Now we real adding objects

            // Create marker style
            MarkerStyleBuilder builder = new MarkerStyleBuilder();
            builder.Size = 20;
            BinaryData iconBytes = AssetUtils.LoadAsset("Z:/FolderName/ProjectName/Assets/markers_mdpi/mapmarker.png");

            byte[] bytearray = iconBytes.GetData();
            int size = Marshal.SizeOf(bytearray[0]) * bytearray.Length;

            IntPtr pnt = Marshal.AllocHGlobal(size);

            builder.Bitmap = new Bitmap(pnt, true);


            MarkerStyle style = null;


            style = builder.BuildStyle();

            // Create a marker with the style we defined previously and add it to the source
            Marker marker = new Marker(position, style);
            datasource.Add(marker);

Официальный технический документ Carto Map совсем не помог, и вот скриншот документа Carto Mobile SDK . Однако, когда я установил официальный SDK.UWP через Nuget, в библиотеке не было соответствующих функций, упомянутых в документе.

Может ли кто-нибудь помочь мне решить эту проблему? В противном случае мне бессмысленно создавать это приложение UWP дальше. Большое спасибо.


person Jack Lau    schedule 09.09.2018    source источник


Ответы (1)


Хорошо, я только что решил эту проблему, и служба поддержки Carto Map также ответила мне. Официальный технический документ не обновляется вовремя, поэтому он вводит в заблуждение новых людей, впервые контактирующих с картографической картой (особенно UWP).

Решение:

            /// Preparation - create layer and datasource

            // projection will be needed later
            Projection projection = map.Options.BaseProjection;

            // Initialize an local data source - a bucket for your objects created in code
            LocalVectorDataSource datasource = new LocalVectorDataSource(projection);

            // Initialize a vector layer with the previous data source
            VectorLayer layer = new VectorLayer(datasource);

            // Add layer to map
            map.Layers.Add(layer);                

            /// Now we real adding objects

            // Create marker style
            MarkerStyleBuilder builder = new MarkerStyleBuilder();
            builder.Size = 30;
            //here we generate a filePath string then pass it into AssetUtils.LoadAsset 
            string filePath = System.IO.Path.Combine("SubfolderName", "imagefileName.png"); 

            var data = AssetUtils.LoadAsset("SubfolderName\\imagefileName.png");
            var bitmap = Bitmap.CreateFromCompressed(data);

            if (bitmap != null)
            {
                builder.Bitmap = bitmap;
                bitmap.Dispose();
            }

            MarkerStyle style = builder.BuildStyle();

            // Create a marker with the style we defined previously and add it to the source
            Marker marker = new Marker(position, style);
            datasource.Add(marker);

Убедитесь, что все файлы/источники находятся в папке Assets.

person Jack Lau    schedule 10.09.2018