- 浏览: 41815 次
- 性别:
- 来自: 日照
最新评论
-
wuhanchendalong:
哥们你能把这个源代码的布局文件发给我好吗?我看看 非常感谢 ...
Android 自定义BaseAdapter -
greatghoul:
antkingwei 写道greatghoul 写道有木有跨平 ...
Java 在CS客户端做网页连接 -
antkingwei:
greatghoul 写道有木有跨平台的实现方法?什么意思?
Java 在CS客户端做网页连接 -
greatghoul:
有木有跨平台的实现方法?
Java 在CS客户端做网页连接
新建图层
package com.android.angking.yibai; import java.util.ArrayList; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Point; import android.graphics.drawable.Drawable; import com.google.android.maps.ItemizedOverlay; import com.google.android.maps.MapView; import com.google.android.maps.OverlayItem; import com.google.android.maps.Projection; public class CustomItemizedOverlay extends ItemizedOverlay<OverlayItem>{ private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>(); private Context context; public CustomItemizedOverlay(Context context,Drawable defaultMarker){ super(boundCenterBottom(defaultMarker)); this.context = context; } public void draw(Canvas canvas,MapView mapView,boolean shadow){ super.draw(canvas, mapView, shadow); //Projection 接口用于屏幕像素点坐标体系和地球概况纬度点坐标体系之间的变换 Projection projection = mapView.getProjection(); //遍历所有的OverlayItem for(int index = this.size()-1;index>=0;index--){ //获得给定索引的item OverlayItem overlayItem = getItem(index); //把经纬度变换相对于MapView左上角的屏幕像素坐标 Point point = projection.toPixels(overlayItem.getPoint(), null); Paint paintText = new Paint(); paintText.setColor(Color.RED); paintText.setTextSize(13); //绘制文本 canvas.drawText(overlayItem.getTitle(), point.x+10, point.y-15, paintText); } } protected boolean onTap(int index){ setFocus(mOverlays.get(index)); return super.onTap(index); } public void removeAll(){ if(mOverlays.size()>=0){ mOverlays.removeAll(mOverlays); } } public void addOverlay(OverlayItem overlay){ mOverlays.add(overlay); populate(); } // public CustomItemizedOverlay(Drawable defaultMarker) { // super(boundCenterBottom(defaultMarker)); // // TODO Auto-generated constructor stub // } @Override protected OverlayItem createItem(int i) { // TODO Auto-generated method stub return mOverlays.get(i); } @Override public int size() { // TODO Auto-generated method stub return mOverlays.size(); } }
自定义OverlayItem
package com.android.yibai.antking; import android.graphics.Bitmap; import com.google.android.maps.GeoPoint; import com.google.android.maps.OverlayItem; public class MyOverlayItem extends OverlayItem{ private Bitmap bitmap; public MyOverlayItem(GeoPoint point, String title, String snippet,Bitmap bitmap) { super(point, title, snippet); this.bitmap = bitmap; // TODO Auto-generated constructor stub } public Bitmap getBitmap(){ return bitmap; } }
实现类
package com.android.yibai.antking; import java.util.List; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.view.View; import android.widget.ImageView; import android.widget.TextView; 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; public class MapMain extends MapActivity{ /** * 地图 */ protected MapView mapView; /** * 弹出的气泡View */ private View popView; private int[] image={R.drawable.icon}; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //初始化气泡,并设置为不可见 popView = View.inflate(this, R.layout.popview, null); setContentView(R.layout.main); //获得map mapView = (MapView)this.findViewById(R.id.mapview); mapView.addView(popView,new MapView.LayoutParams( MapView.LayoutParams.WRAP_CONTENT, MapView.LayoutParams.WRAP_CONTENT,null ,MapView.LayoutParams.BOTTOM_CENTER)); //这里没有给GeoPoint ,在onFoucusChangeListener中设置 popView.setVisibility(View.GONE); /** * 创建图标资料(用于显示在overlayItem所表示表记的地位 */ Drawable drawable =this.getResources().getDrawable(R.drawable.icon); //为mark定以地位和鸿沟 drawable.setBounds(0,0,drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); CustomItemizedOverlay overlay = new CustomItemizedOverlay(this,drawable); //设置显示/隐藏气泡的位置 overlay.setOnFocusChangeListener(onFocusChangeListener); /** * 创建并添加一个标志 */ GeoPoint point = new GeoPoint(35422006,119524095); //创建标识 Bitmap bitmap = BitmapFactory.decodeResource(MapMain.this.getResources(), R.drawable.psu); MyOverlayItem overlayItem = new MyOverlayItem(point ,"银河公园","这是一个充满神奇的公园,一步一景,我去的时候有一种柳暗花明又一村的感觉",bitmap); overlay.addOverlay(overlayItem); /** * 创建第二个标识 */ Bitmap bitmap1 = BitmapFactory.decodeResource(this.getResources(), R.drawable.icon); GeoPoint point1 = new GeoPoint((int)(22.53108*1E6),(int)(113.99151*1E6)); MyOverlayItem overlayItem1 = new MyOverlayItem(point1,"秀丽中华","中国最好的旅游胜地之一",bitmap1); overlay.addOverlay(overlayItem1); //向地图里添加自定义的ItemizedOverlay List<Overlay> mapOverlays =mapView.getOverlays(); mapOverlays.add(overlay); //设置地图为卫星地图 mapView.setSatellite(true); //设置地图可以缩放 mapView.setBuiltInZoomControls(true); /** * 取得地图管理对象,用于把握地图 * */ //设置地图的中间 mapView.getController().setCenter(point); //设置地图默认的缩放级别 mapView.getController().setZoom(13); } @Override protected boolean isRouteDisplayed() { // TODO Auto-generated method stub return false; } private final ItemizedOverlay.OnFocusChangeListener onFocusChangeListener = new ItemizedOverlay.OnFocusChangeListener() { @Override public void onFocusChanged(ItemizedOverlay overlay, OverlayItem newFocus) { // TODO Auto-generated method stub //创建气泡窗口 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); ImageView image = (ImageView)popView.findViewById(R.id.map_bubbleImage); image.setImageBitmap(((MyOverlayItem) newFocus).getBitmap()); 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); } } }; }
发表评论
-
Android开发中用到的几种多线程
2012-03-12 10:42 2174在开发工程中线程可以帮助我们提高运行速度,Andro ... -
android 数据库随APK打包发布
2012-03-09 22:01 2297有些时候我们的软件用到SQLite数据库,这个时候怎么把一个做 ... -
goolge 地图地址位置解析
2012-02-24 16:50 1174Java代码package com.android.yibai ... -
Android ImageView使用网上图片资源
2012-02-24 16:47 1761Java代码package com.android.antk ... -
Android手机与WEB服务器通信
2012-02-24 12:30 2744Tomcat服务器 package com.edu.q ... -
手机于PC服务器通信
2012-02-24 12:16 1104手机客户端 package com.newsocket ... -
在google地图上画出两点的行走路线
2012-02-23 12:56 1738新建一个图层 package com.androi ... -
GPS定位那点事
2012-02-22 15:30 1454<?xml version="1.0 ... -
手机上使用google 搜索引擎
2012-02-22 15:25 1141<?xml version="1.0&q ... -
android phoneGap开发
2012-01-15 08:42 1052PhoneGap是一个用基于HTML,CSS和JavaScri ... -
Android Google地图开发入门
2011-12-29 17:17 1805Android开发要连接GoogelMaps使用MapVi ... -
集中管理Activity
2011-12-25 15:21 1120有时候在设计软件的时候布局复杂的话不利于查看跟更改,这时 ... -
Android Dilaog 设置没有标题注意的地方
2011-12-23 12:51 1397layoutInflater = LayoutInfla ... -
AndroidUI设计美化
2011-12-18 15:52 958不要说Android中UI做的丑是因为不会美化,其实做一个 ... -
Android QQ多级列表的实现
2011-12-17 19:40 2320主类: package com.android.qu ... -
Android SharedPreferences应用解析
2011-12-11 09:52 1194在任何软件中,数据存储都是非常重要的,一定程度上来说它是软件 ... -
Android GridView,Gallery动态更新数据
2011-12-09 00:05 3080package com.android.wei.z ... -
Android 划出一个半透明的PopupWindow
2011-12-07 22:22 2755效果图好像不显示了package com.android ... -
Android 自定义BaseAdapter
2011-12-04 13:57 1324不要对俺的贴图做评价 看一下代码实现 pac ... -
Android 3D壁纸开发设计
2011-11-30 19:34 1064希望能给需要得人一点帮助,这个触屏可以改变壁纸映射, J ...
相关推荐
本文将详细讲解如何利用Google Maps API在地图上显示多个点,并实现点击这些点时弹出气泡展示位置信息。 首先,我们需要引入Google Maps JavaScript API。这个API是通过在HTML文件中添加一个脚本标签来引用的,URL...
这个压缩包"arcgis api 3.x for js 地图加载多个气泡窗口展示.zip"很可能包含了一系列示例代码或教程,展示了如何在地图上加载并展示多个信息气泡窗口。这些气泡窗口通常用于提供关于地图上特定位置的详细信息,如...
气泡(Info Windows)是谷歌地图API中的另一种重要元素,它们可以在地图上为标记或地理位置提供附加信息。当你点击地图上的某个点时,一个包含文本、图片或其他HTML内容的窗口会弹出。信息窗口通常用于展示地点详情...
在本项目中,PopupWindow被用来创建类似百度地图气泡的弹出视图。 源码中的"PopWindow"可能是主程序实现气泡功能的核心类。这个类可能包含了以下关键部分: 1. **初始化PopupWindow**:初始化PopupWindow时,需要...
arcgis api 3.x for js 地图加载多个气泡窗口展示源码,arcgis api 3.x 提供的 Popup默认只可以弹出一个,某些情况下,用户想加载弹出多个窗口,我一直看看能不能有什么途径,比如 arcgis api 3.x 拓展之类的,对其...
而 "android-mapviewballoons" 插件则引入了更复杂的自定义视图,使得地图标记可以弹出包含详细信息的气泡,这些气泡可以是图片、文字或者更复杂的布局。 这个库的工作原理是通过覆写默认的 Marker 对象,添加了一...
- 气泡通常以Marker的形式出现在地图上,开发者需要创建一个自定义的MarkerView,覆盖默认的图标样式。 - 使用BitmapDescriptorFactory从资源或者网络中加载图片,设置为Marker的图标。 3. **PopupWindow实现气泡...
4. **气泡提示框(InfoWindow)**:当用户点击标注或者地图上的某个点时,可以弹出包含详细信息的提示框。通过`google.maps.InfoWindow`对象实现: ```javascript var infowindow = new google.maps.InfoWindow({ ...
Android提供了多种动画API,如ObjectAnimator或ValueAnimator,可以用来控制视图的大小、位置变化,使得气泡的弹出和关闭更自然流畅。 4. **布局管理**:气泡的布局管理是另一个关键部分,因为气泡需要根据地图上的...
本项目是一个关于在iOS上使用谷歌地图的示例,涵盖了定位、地图上的标注(气泡)显示以及自定义气泡和点击事件处理,最终实现地图导航功能。 首先,要使用谷歌地图SDK,你需要在Google Developers Console注册并...
4. **PopupWindow**:在Android中,PopupWindow类可以用来创建弹出式窗口,常用于实现自定义气泡效果。将自定义视图添加到PopupWindow,并设置位置使其跟随Marker显示。 5. **事件监听**:为了实现气泡的点击交互,...
谷歌地图API V3是Google提供的一套用于在网页上嵌入地图、进行地理位置处理的JavaScript接口。这个API允许开发者在自己的网站上创建交互式地图,包括但不限于定位、标记、信息窗口、路线规划等功能。本教程将对谷歌...
1. **Marker**:在地图上表示特定位置的图标,用户可以点击Marker来触发相应的事件,比如弹出信息窗口。源码中可能包含了创建和设置Marker的方法,如`MarkerOptions`和`addMarker()`。 2. **InfoWindow**:默认情况...
在安卓开发中,有时我们需要创建类似百度地图那样的信息气泡,即在地图上显示具有自定义内容的小窗口,用户点击地图上的某个位置时,这些气泡会弹出展示详细信息。这个“安卓Android源码——仿百度地图气泡程序源码....
4. **PopupWindow或Dialog**:气泡通常以弹出窗口的形式出现,所以开发者可能使用了PopupWindow或者Dialog来实现这一功能。这两种UI组件的用法和特性需要熟练掌握。 5. **数据绑定和动态加载**:如果气泡中的信息...