Android百度地图-实现POI的搜索(搜索周边)附源码

阅读: 评论:0

Android百度地图-实现POI的搜索(搜索周边)附源码⾸先贴出主要代码
Activity龙山温泉
package cn.yhsh.maptest;
import java.util.ArrayList;
import utils.PoiOverlay;
import android.app.Activity;
t.BroadcastReceiver;
t.Context;
t.Intent;
t.IntentFilter;
aphics.Color;
aphics.Typeface;
aphics.drawable.ColorDrawable;
import android.ConnectivityManager;
import android.NetworkInfo;
import android.os.Bundle;
import android.util.Log;
中青旅遨游网import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup.LayoutParams;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.RotateAnimation;
import android.view.animation.ScaleAnimation;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.Toast;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BaiduMap.OnMarkerClickListener;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.MapStatus;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MapViewLayoutParams;
import com.baidu.mapapi.map.Marker;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.map.TextOptions;
import com.del.LatLng;
import com.del.LatLngBounds;
import com.baidu.PoiInfo;
import com.baidu.SearchResult;
import com.baidu.mapapi.search.poi.OnGetPoiSearchResultListener;
import com.baidu.mapapi.search.poi.PoiBoundSearchOption;
import com.baidu.mapapi.search.poi.PoiDetailResult;
import com.baidu.mapapi.search.poi.PoiResult;
import com.baidu.mapapi.search.poi.PoiSearch;
public class MainActivity extends Activity implements OnMarkerClickListener,
OnClickListener, OnLongClickListener {
double weidu = 39.6184470000;
double jindu = 116.4252280000;// 这个是百度地图公司的经纬度坐标点
LatLng point = new LatLng(weidu, jindu);
private IntentFilter filter;
private MapView mv_maptest;
private BaiduMap map;
private View dialog_tv;
private TextView tv_dialog;
private EditText et_serach;
private Button bt_search;
private String et_result;
private PoiInfo poiInfo;
private LinearLayout ll_suofang;
private LinearLayout llweixing;
private LinearLayout ll_search;
@Override
protected void onCreate(Bundle savedInstanceState) {
initsdk();
setContentView(R.layout.activity_main);
// 拿到mapview控件设置默认缩放⽐例
mv_maptest = (MapView) findViewById(R.id.mv_maptest);
et_serach = (EditText) findViewById(_serach);
bt_search = (Button) findViewById(R.id.bt_search);
Button bt_putong = (Button) findViewById(R.id.bt_putong);
Button bt_weixing = (Button) findViewById(R.id.bt_weixing);
Button bt_jiaotong = (Button) findViewById(R.id.bt_jiaotong);
ImageButton ib_da = (ImageButton) findViewById(R.id.ib_da);
ImageButton ib_xiao = (ImageButton) findViewById(R.id.ib_xiao);
ll_suofang = (LinearLayout) findViewById(R.id.ll_suofang);
llweixing = (LinearLayout) findViewById(R.id.llweixing);
ll_search = (LinearLayout) findViewById(R.id.ll_serach);
map = Map();
MapStatusUpdate zoom = To(14);// 设置地图默认缩放⽐例为10(默认为12)  map.setMapStatus(zoom);
MapStatusUpdate center = wLatLng(point);
// 设置默认中⼼店
map.setMapStatus(center);
// 去掉标尺
mv_maptest.showZoomControls(false);
// 去掉缩放按钮
mv_maptest.showScaleControl(false);
boolean menu = mv_maptest.showContextMenu();
Log.e("测试", menu + "");
// 写⽂字
drawtext();
// 画对话框在地图上⾯通过点击图⽚后
dialogpic();
// ❀图⽚字啊地图上⾯
drawpictuer();
bt_search.setOnClickListener(new OnClickListener() {
上海野生动物园电话号码@Override
public void onClick(View v) {
// 拿到输⼊框的内容
et_result = Text().toString().trim();
if (!et_result.equals("") && !et_result.equals(null)) {
Toast.makeText(MainActivity.this, et_result,
Toast.LENGTH_LONG).show();
// 搜索资源
serachrescours();
} else {
Toast.makeText(MainActivity.this, "请输⼊数据再点击查询按钮",
Toast.LENGTH_LONG).show();
}
}
});
// 设置三个按钮点击事件
tv_dialog.setOnClickListener(this);
bt_putong.setOnClickListener(this);
bt_weixing.setOnClickListener(this);
bt_jiaotong.setOnClickListener(this);
ib_da.setOnClickListener(this);
ib_xiao.setOnClickListener(this);
/欧洲杯赛程2022赛程表图
**
* 长按放⼤按钮隐藏缩放按钮
*/
ib_da.setOnLongClickListener(this);
bt_putong.setOnLongClickListener(this);
tv_dialog.setOnLongClickListener(this);
bt_search.setOnLongClickListener(this);
}
/**
* 在范围内搜索的⽅法
*/
private void serachrescours() {
PoiSearch poiS = wInstance();// 创建对象
poiS.setOnGetPoiSearchResultListener(new Mypoisearch());
PoiBoundSearchOption fanwei = new PoiBoundSearchOption();
LatLngBounds llbs = new LatLngBounds.Builder()
.include(new LatLng(40.7460400000, 114.9219870000))
.include(new LatLng(38.9954100000, 117.7206750000)).build();
fanwei.bound(llbs).keyword(et_result);// 搜索的内容
// 发起范围内搜索
poiS.searchInBound(fanwei);
}
class Mypoisearch implements OnGetPoiSearchResultListener {
@Override
public void onGetPoiDetailResult(PoiDetailResult arg0) {
}
@Override
public void onGetPoiResult(PoiResult result) {
if (result == null
|| == SearchResult.ERRORNO.RESULT_NOT_FOUND) {    Toast.makeText(MainActivity.this, "未到结果", Toast.LENGTH_LONG)      .show();
return;
}
// 返回搜索结果
PoiOverlay pioo = new MyPoiOverlay(map);
// 设置覆盖物marker点击事件
map.setOnMarkerClickListener(pioo);
// 设置数据
pioo.setData(result);
// 添加地图
pioo.addToMap();
pioo.addToMap();
}
// 写⼀类继承PoiOverlay
class MyPoiOverlay extends PoiOverlay {
public MyPoiOverlay(BaiduMap baiduMap) {
super(baiduMap);
}
/*
* 重写onPoiClick点击事件⽅法
*/
@Override
public boolean onPoiClick(int i) {
// 拿到结果
PoiResult poiResult = getPoiResult();
poiInfo = AllPoi().get(i);
/
/ 弹出吐司显⽰点中的点击事件
Toast.makeText(getApplicationContext(), poiInfo.address,
Toast.LENGTH_LONG).show();
// 弹出populowindow
showPopupWindow(getCurrentFocus());
// showPopupWindow(mv_maptest);
PoiClick(i);
}
快捷酒店排名最干净}
闽清县天气预报15天}
/**
* 显⽰popupwindow的⽅法
*/
private void showPopupWindow(View view) {
// ⼀个⾃定义的布局,作为显⽰的内容
View contentView = View.inflate(getApplicationContext(),
R.layout.activity_popupwindow, null);
// 设置按钮的点击事件
TextView button_popuowindow = (TextView) contentView
.findViewById(R.id.tv_popuowindow);
button_popuowindow.setText(poiInfo.address);
button_popuowindow.setTextColor(Color.BLUE);
button_popuowindow.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "按钮已被点击",
Toast.LENGTH_SHORT).show();
}
});
final PopupWindow popupWindow = new PopupWindow(contentView,
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, true);
popupWindow.setTouchable(true);
popupWindow.setTouchInterceptor(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return false;
// 这⾥如果返回true的话,touch事件将被拦截
// 拦截后 PopupWindow的onTouchEvent不被调⽤,这样点击外部区域⽆法dismiss
// 拦截后 PopupWindow的onTouchEvent不被调⽤,这样点击外部区域⽆法dismiss
}
});
// 如果不设置PopupWindow的背景,⽆论是点击外部区域还是Back键都⽆法dismiss弹框
// 我觉得这⾥是API的⼀个bug
// popupWindow.setBackgroundDrawable(getResources().getDrawable(
/
/ um));
popupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));// 设置背景颜⾊为透明⾊
// getResources().getDrawable(um).setAlpha(0);// 设置图⽚透明度为0
// 设置好参数之后再show
// int[] location = new int [2];
// LocationInWindow(location);
// int x = location[0];
// int y = location[1];
// popupWindow.showAtLocation(view, Gravity.CENTER_HORIZONTAL, x, y);
popupWindow.showAsDropDown(view);// 此⽅法也可以
// 缩放动画
ScaleAnimation scanim = new ScaleAnimation(0, 1, 0, 1,
Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 1.0f);
scanim.setDuration(4000);// 四秒钟
// 渐变动画
AlphaAnimation apap = new AlphaAnimation(0.1f, 1.0f);
apap.setDuration(4000);
// 旋转动画
RotateAnimation ra = new RotateAnimation(0, 360,
Animation.RELATIVE_TO_SELF, 0.1f, Animation.RELATIVE_TO_SELF,
0.1f);
ra.setDuration(4000);
ra.setFillAfter(true);// 动画执⾏完后是否停留在执⾏完的状态
// 组合动画
AnimationSet ams = new AnimationSet(true);// 共享动画插⼊器
// 添加组合动画
ams.addAnimation(ra);
ams.addAnimation(scanim);
ams.addAnimation(apap);
// 开启动画效果
contentView.startAnimation(ams);
}
private void dialogpic() {
dialog_tv = View.inflate(getApplicationContext(),
R.layout.activity_dialogpic, null);
MapViewLayoutParams params = new MapViewLayoutParams.Builder()
.layoutMode(MapViewLayoutParams.ELayoutMode.mapMode)
.position(point).width(MapViewLayoutParams.WRAP_CONTENT)
.height(MapViewLayoutParams.WRAP_CONTENT).build();
mv_maptest.addView(dialog_tv, params);
dialog_tv.setVisibility(View.INVISIBLE);// ⾸先隐藏
tv_dialog = (TextView) dialog_tv.findViewById(R.id.tv_dialog);
map.setOnMarkerClickListener(this);// 设置点击事件
}
/
/ 打开之前先检验key的正确与否
private void initsdk() {
// 注册⼴播
filter = new IntentFilter();
filter.addAction(SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR);// ⽹络连接错误
filter.addAction(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR);// 校验失败  registerReceiver(new Mybraodcast(), filter);
SDKInitializer.initialize(getApplicationContext());
}
class Mybraodcast extends BroadcastReceiver {

本文发布于:2023-09-05 19:51:15,感谢您对本站的认可!

本文链接:http://www.035400.com/whly/3/612232.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:设置   点击   搜索   动画   按钮   地图
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2024-2030 Comsenz Inc.Powered by © 文化旅游网 滇ICP备2022007236号-403 联系QQ:1103060800网站地图