package com.pop;
import java.util.List;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
public class PopMapActivity extends MapActivity {
/**
* 地图View
*/
protected MapView mapView;
/**
* 弹出的气泡View
*/
private View popView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//初始化气泡,并设置为不可见
popView = View.inflate(this, R.layout.popview, null);
setContentView(R.layout.popmap);
mapView = (MapView) findViewById(R.id.map_view);
mapView.addView(popView, new MapView.LayoutParams(
MapView.LayoutParams.WRAP_CONTENT,
MapView.LayoutParams.WRAP_CONTENT, null,
MapView.LayoutParams.BOTTOM_CENTER));
// 由于气泡的尾巴是在下边居中的,因此要设置成
//MapView.LayoutParams.BOTTOM_CENTER.
// 这里没有给GeoPoint,在onFocusChangeListener中设置
popView.setVisibility(View.GONE);
/**
* 创建图标资源(用于显示在overlayItem所标记的位置)
*/
Drawable drawable = this.getResources().getDrawable(
R.drawable.ballon1);
// 为maker定义位置和边界
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),
drawable.getIntrinsicHeight());
MyItemizedOverlay overlay = new MyItemizedOverlay(this, drawable);
// 设置显示/隐藏气泡的监听器
overlay.setOnFocusChangeListener(onFocusChangeListener);
// 构造一个经纬度点
GeoPoint point = new GeoPoint((int) (39.907 * 1E6),
(int) (116.391 * 1E6));
// 创建标记(北京万达电影城CBD店)
OverlayItem overlayItem = new OverlayItem(point, "北京万达电影城CBD店",
"影院地址:北京市朝阳区大望路万达广场");
// 将标记添加到图层中(可添加多个OverlayItem)
overlay.addOverlay(overlayItem);
point = new GeoPoint((int) (39.937 * 1E6), (int) (116.39251 * 1E6));
// 创建标记(北京万达电影城CBD店)
overlayItem = new OverlayItem(point, "北京万达电影城","影院地址:北京市朝阳区大望路 ");
// 将标记添加到图层中(可添加多个OverlayItem)
overlay.addOverlay(overlayItem);
/**
* 往地图上添加自定义的ItemizedOverlay
*/
List<Overlay> mapOverlays = mapView.getOverlays();
mapOverlays.add(overlay);
// 设置地图模式为交通地图
mapView.setStreetView(true);
// 设置启用内置的缩放控件
mapView.setBuiltInZoomControls(true);
/**
* 取得地图控制器对象,用于控制MapView
*/
// 设置地图的中心
mapView.getController().setCenter(point);
// 设置地图默认的缩放级别
mapView.getController().setZoom(13);
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
/**
* 监听器 当一个Overlay焦点改变时触发
*/
private final ItemizedOverlay.OnFocusChangeListener onFocusChangeListener = new ItemizedOverlay.OnFocusChangeListener() {
@Override
public void onFocusChanged(ItemizedOverlay overlay, OverlayItem newFocus)
{
// 创建气泡窗口
if (popView != null) {
popView.setVisibility(View.GONE);
}
if (newFocus != null) {
MapView.LayoutParams geoLP = (MapView.LayoutParams) popView
.getLayoutParams();
geoLP.point = newFocus.getPoint();// 这行用于popView的定位
TextView title = (TextView) popView
.findViewById(R.id.map_bubbleTitle);
title.setText(newFocus.getTitle());
TextView desc = (TextView) popView
.findViewById(R.id.map_bubbleText);
if (newFocus.getSnippet() == null
|| newFocus.getSnippet().length() == 0) {
desc.setVisibility(View.GONE);
} else {
desc.setVisibility(View.VISIBLE);
desc.setText(newFocus.getSnippet());
}
mapView.updateViewLayout(popView, geoLP);
popView.setVisibility(View.VISIBLE);
}
}
};
}
google标记多个点点击弹出气泡
4星 · 超过85%的资源 需积分: 32 141 浏览量
2012-06-06
11:02:10
上传
评论 1
收藏 81KB ZIP 举报
阿贝啊啊
- 粉丝: 14
- 资源: 14
最新资源
- IMG_20240423_191216.jpg
- 基于MATLAB实现分析黑体辐射光谱图时将通过迈克尔逊干涉仪得到干涉图经过傅里叶变换转换为光谱图的功能源码.zip
- DynamicArray02.java
- 数据可视化 matplotlib 实例.docx
- 数据可视化 matplotlib 实例.7z
- Python 使用 Matplotlib 绘制甘特图的实践.7z
- Python 使用 Matplotlib 绘制甘特图的实践.docx
- matplotlib 中的 cmap 参数介绍.docx
- matplotlib 中的 cmap 参数介绍.7z
- 基于matlab的毕业设计基于Matlab使用LQR实现车辆轨迹跟踪源码.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
- 3
- 4
- 5
- 6
前往页