Как я могу добавить настроенный маркер 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 дальше. Большое спасибо.
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.