android 点击收藏,【Android】3.21 示例21—兴趣点收藏功能

该博客介绍了在Android应用中使用C#和VS2015创建、管理本地收藏的百度地图兴趣点数据的方法。包括新建、查看和删除收藏点的操作,还给出了运行截图和详细设计步骤,如添加xml和.cs文件、修改MainActivity.cs文件等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分类:C#、Android、VS2015、百度地图应用; 创建日期:2016-02-04

简介:介绍如何创建、管理本地收藏的兴趣点数据

详述:

(1)新建本地点收藏;

(2)查看已收藏本地点;

(3)删除已收藏本地点;

一、运行截图

长按选择的兴趣点,就会自动显示该点的经纬度,输入名称,单击【保存】按钮就保存了该兴趣点。可多次重复此过程保存多个兴趣点。

单击【查看全部】按钮,就会显示如下图所示的兴趣点标注。单击标注,会弹出对话框编辑或删除该标注。

单击【删除全部】,将删除所有兴趣点。

image-L2Jsb2cvODQ4MjcxLzIwMTYwMi84NDgyNzEtMjAxNjAyMDQxNjA5MTkyNDEtMTE3NTcxNzQ4Ni5w%0D%0Abmc=.jpg

二、设计步骤

1、添加xml文件

在layout文件夹下添加下面的3个文件(代码不再列出):

demo21_favorite.xml

demo21_favorite_alert.xml

demo21_favorite_infowindow.xml

2、添加Demo21Favorite.cs文件

在SrcSdkDemos文件夹下添加该文件,然后将代码改为下面的内容:

using Android.App;

using Android.Content.PM;

using Android.OS;

using Android.Views;

using Android.Widget;

using Com.Baidu.Mapapi.Favorite;

using Com.Baidu.Mapapi.Map;

using Com.Baidu.Mapapi.Model;

using System.Collections.Generic;

namespace BdMapV371Demos.SrcSdkDemos

{

///

/// 演示如何使用本地点收藏功能

///

[Activity(Label = "@string/demo_name_favorite",

ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.KeyboardHidden,

ScreenOrientation = ScreenOrientation.Sensor)]

public class Demo21Favorite : Activity

{

//地图相关

private TextureMapView mMapView;

private BaiduMap mBaiduMap;

//界面控件相关

private EditText locationText;

private EditText nameText;

private View mPop;

private View mModify;

EditText mdifyName;

//保存点中的点id

private string currentID;

//显示marker用的图标

BitmapDescriptor bdA = BitmapDescriptorFactory.FromResource(Resource.Drawable.icon_marka);

IList markers = new List();

protected override void OnCreate(Bundle savedInstanceState)

{

base.OnCreate(savedInstanceState);

SetContentView(Resource.Layout.demo21_favorite);

//初始化地图

mMapView = FindViewById(Resource.Id.bmapView);

mBaiduMap = mMapView.Map;

mBaiduMap.MapClick += (s, e) =>

{

mBaiduMap.HideInfoWindow();

};

mBaiduMap.MapLongClick += (s, e) =>

{

var point = e.P0;

locationText.Text = string.Format("{0},{1}", point.Latitude, point.Longitude);

};

mBaiduMap.MarkerClick += (s, e) =>

{

var marker = e.P0;

mBaiduMap.HideInfoWindow();

if (marker == null)

{

return;

}

else

{

InfoWindow mInfoWindow = );

mBaiduMap.ShowInfoWindow(mInfoWindow);

MapStatusUpdate update = MapStatusUpdateFactory.NewLatLng(marker.Position);

mBaiduMap.SetMapStatus(update);

currentID = marker.ExtraInfo.GetString("id");

}

};

//【保存】按钮--添加收藏点

Button btnSave = FindViewById(Resource.Id.save);

btnSave.Click += delegate

{

if (string.IsNullOrEmpty(nameText.Text))

{

Toast.MakeText(this, "名称必填", ToastLength.Long).Show();

return;

}

if (string.IsNullOrEmpty(locationText.Text))

{

Toast.MakeText(this, "坐标点必填", ToastLength.Long).Show();

return;

}

FavoritePoiInfo info = new FavoritePoiInfo();

info.InvokePoiName(nameText.Text);

LatLng pt;

try

{

string strPt = locationText.Text;

, strPt.IndexOf(","));

);

pt = new LatLng(double.Parse(lat), double.Parse(lng));

info.InvokePt(pt);

)

{

Toast.MakeText(this, "添加成功", ToastLength.Long).Show();

}

else

{

Toast.MakeText(this, "添加失败", ToastLength.Long).Show();

}

}

catch

{

Toast.MakeText(this, "坐标解析错误", ToastLength.Long).Show();

}

};

//【查看全部】按钮--获取全部收藏点

Button btnSearchAll = FindViewById(Resource.Id.searchall);

btnSearchAll.Click += delegate

{

mBaiduMap.Clear();

IList list = FavoriteManager.Instance.AllFavPois;

)

{

Toast.MakeText(this, "没有收藏点", ToastLength.Long).Show();

return;

}

//将marker绘制在地图上

markers.Clear();

; i < list.Count; i++)

{

MarkerOptions option = new MarkerOptions()

.InvokeIcon(bdA)

.InvokePosition(list[i].Pt);

Bundle b = new Bundle();

b.PutString("id", list[i].ID);

option.InvokeExtraInfo(b);

markers.Add((Marker)mBaiduMap.AddOverlay(option));

}

};

//【删除全部】按钮--删除全部点

Button btnDeleteAll = FindViewById(Resource.Id.deleteall);

btnDeleteAll.Click += delegate

{

if (FavoriteManager.Instance.ClearAllFavPois())

{

Toast.MakeText(this, "全部删除成功", ToastLength.Long).Show();

mBaiduMap.Clear();

mBaiduMap.HideInfoWindow();

}

else

{

Toast.MakeText(this, "全部删除失败", ToastLength.Long).Show();

}

};

//初始化收藏夹

FavoriteManager.Instance.Init();

//初始化UI

InitUI();

}

public void InitUI()

{

locationText = FindViewById(Resource.Id.pt);

nameText = FindViewById(Resource.Id.name);

//获取弹框

mPop = LayoutInflater.Inflate(Resource.Layout.demo21_favorite_infowindow, null, false);

//弹框中的【修改】按钮--修改收藏点

Button btnSearchOne = mPop.FindViewById(Resource.Id.searchone);

btnSearchOne.Click += delegate

{

mBaiduMap.HideInfoWindow();

//弹框修改

mModify = LayoutInflater.Inflate(Resource.Layout.demo21_favorite_alert, null);

mdifyName = mModify.FindViewById(Resource.Id.modifyedittext);

AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.SetView(mModify);

string oldName = FavoriteManager.Instance.GetFavPoi(currentID).PoiName;

mdifyName.Text = oldName;

builder.SetPositiveButton("确认", (sender, args) =>

{

string newName = mdifyName.Text;

if (string.IsNullOrEmpty(newName) == false)

{

//modify

FavoritePoiInfo info = FavoriteManager.Instance.GetFavPoi(currentID);

info.InvokePoiName(newName);

if (FavoriteManager.Instance.UpdateFavPoi(currentID, info))

{

Toast.MakeText(this, "修改成功", ToastLength.Long).Show();

}

}

else

{

Toast.MakeText(this, "名称不能为空,修改失败", ToastLength.Long).Show();

}

(sender as AlertDialog).Dismiss();

});

builder.SetNegativeButton("取消", (sender, args) =>

{

(sender as AlertDialog).Dismiss();

});

builder.Create().Show();

};

//弹框中的【删除】按钮--删除一个指定点

Button btnDeleteOne = mPop.FindViewById(Resource.Id.deleteone);

btnDeleteOne.Click += delegate

{

if (FavoriteManager.Instance.DeleteFavPoi(currentID))

{

Toast.MakeText(this, "删除点成功", ToastLength.Long).Show();

if (markers != null)

{

; i < markers.Count; i++)

{

if (markers[i].ExtraInfo.GetString("id") == currentID)

{

markers[i].Remove();

markers.RemoveAt(i);

mBaiduMap.HideInfoWindow();

break;

}

}

}

}

else

{

Toast.MakeText(this, "删除点失败", ToastLength.Long).Show();

}

};

}

protected override void OnPause()

{

mMapView.OnPause();

base.OnPause();

}

protected override void OnResume()

{

mMapView.OnResume();

base.OnResume();

}

protected override void OnDestroy()

{

//释放收藏夹功能资源

FavoriteManager.Instance.Destroy();

bdA.Recycle();

// MapView的生命周期与Activity同步,当activity销毁时需调用MapView.destroy()

mMapView.OnDestroy();

mBaiduMap = null;

base.OnDestroy();

}

}

}

3、修改MainActivity.cs文件

在MainActivity.cs文件的demos字段定义中,去掉【示例21】下面的注释。

运行观察效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值