高德地图 amap 显示 marker和自定义的infoWindow

高德地图 amap 显示 marker和自定义的infoWindow

explains

在实现的app中需要查看附近的活动状态,就需要用到marker和自定义的infoWindow.实现这个功能我会去找下高德组件是否支持这个修改,通过查询,是可以的。百度 高德 marker android 图片,出来了很多图片,里面有很好的已经解决了效果图
http://blog.csdn.net/zhoumushui/article/details/48804157
进一步结合官方api能实现小的demo,但时自定义InfoWindow没有,在github中搜索getInfoWindow 等修改infoWindow的方法,来找到了一些好的例子。
https://github.com/JasonBour/learngit/blob/d82295bf16c8aaf3230e462ab7b3e05ad124b9fb/Newapp/src/com/example/fragments/FindFragment.java
最终结果成功出现。

show

显示图片

code

NormalActivity.java
public class NormalActivity extends FragmentActivity implements AMap.OnMarkerClickListener,AMap.OnInfoWindowClickListener,AMap.InfoWindowAdapter{
    static final CameraPosition cameraPosition=new CameraPosition.Builder().target(new LatLng(30.62275,104.068573))
            .zoom(18).bearing(0).tilt(30).build();
    private AMap aMap;
    private SupportMapFragment aMapFragment;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        init();
    }

    private void init(){
        AMapOptions aOptions=new AMapOptions();
        aOptions.zoomGesturesEnabled(false);
        //aOptions.scrollGesturesEnabled(false);
        aOptions.camera(cameraPosition);
        if(aMapFragment==null){
            aMapFragment=SupportMapFragment.newInstance(aOptions);
            FragmentTransaction fragmentTransaction=getSupportFragmentManager().beginTransaction();
            fragmentTransaction.add(android.R.id.content,aMapFragment,"map");
            fragmentTransaction.commit();
        }
    }
    @Override
    protected  void onResume(){
        super.onResume();
        initMap();
    }
    private void initMap(){
        if(aMap==null){
            aMap=aMapFragment.getMap();
            setUpMap();
        }
    }
    private void setUpMap(){
        aMap.setOnMarkerClickListener(this);
        aMap.setOnInfoWindowClickListener(this);
        aMap.setInfoWindowAdapter(this);
        addMarkersToMap();   //
    }
    private void addMarkersToMap(){
        drawMarkers();
    }

    @Override
    public View getInfoWindow(Marker marker) {
        View view  = getLayoutInflater().inflate(R.layout.activity_marker,null);
        ImageView image = (ImageView)view.findViewById(R.id.image);
        TextView info = (TextView)view.findViewById(R.id.info);
        TextView orderNumber=(TextView)view.findViewById(R.id.orderNumber);
        orderNumber.setText("2本");
        orderNumber.setTextColor(Color.parseColor("#FF0000"));
        info.setText(marker.getTitle());


        return view;
    }

    @Override
    public View getInfoContents(Marker marker) {
        return null;
    }

    public void drawMarkers(){
        MarkerOptions markerOptions=new MarkerOptions();
        Marker marker=aMap.addMarker(markerOptions.position(new LatLng(30.624722,104.067533)).title("王泽陶")
                .draggable(true));
        marker.showInfoWindow();

    }

    @Override
    public void onInfoWindowClick(Marker marker) {
        System.out.println("点击了输入框");
    }

    @Override
    public boolean onMarkerClick(Marker marker) {
        System.out.println("点击了图标");
        return false;
    }

}
activity_marker.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >
 <ImageView
     android:src="@drawable/personimg"
     android:id="@+id/image"
     android:layout_width="30dp"
     android:layout_height="40dp"
     />
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <TextView
        android:id="@+id/info"
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="0dp"/>

    <TextView
        android:id="@+id/orderNumber"
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="0dp"
/>
</LinearLayout>

last update 2015-09-19

高德地图InfoWindow是一种用于显示信息窗口的小部件,通常会在地图上点击某个标记点时弹出,显示该位置的相关信息。在Android或iOS的高德地图SDK中,你可以按照以下步骤使用InfoWindow: 1. **初始化地图和View**: 首先需要创建`AMap`实例,并将其添加到你的布局文件中对应的MapView组件。 2. **添加标记点**: 使用`MarkerOptions`类创建标记点,设置其位置、图标和标题等属性。例如: ```java MarkerOptions marker = new MarkerOptions() .position(new LatLng(latitude, longitude)) .title("地点名称") .icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_location)); ``` 3. **绑定点击事件**: 当用户点击标记点时,需要监听它的`onMarkerClick`事件,然后创建并显示InfoWindow: ```java AMap.OnMarkerClickListener listener = new AMap.OnMarkerClickListener() { @Override public boolean onMarkerClick(Marker marker) { InfoWindow infoWindow = new InfoWindow(); View contentView = LayoutInflater.from(context).inflate(R.layout.info_window_layout, null); // 设置内容视图和显示 infoWindow.setContentView(contentView); infoWindow.showAtLocation(mapView, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0); return true; // 返回true表示处理了点击事件 } }; map.setOnMarkerClickListener(listener); ``` 4. **管理InfoWindow生命周期**: 可能需要在合适的时机关闭InfoWindow,如用户离开窗口或手动隐藏: ```java infoWindow.dismiss(); ``` 5. **自定义InfoWindow样式**: 您可以自定义InfoWindow的样式和内容视图,比如改变背景颜色、字体等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值