在地图片段中显示自定义文本,Android [英] Displaying custom text in a map snippet, Android

查看:93
本文介绍了在地图片段中显示自定义文本,Android的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

好吧,我整天都在这儿,我放弃了尝试自己弄这个!

Ok, I've been at this all day now, I give up trying to get this myself!

我已经声明了地图和位置

I've declared the map and location

private GoogleMap googleMap;

已声明位置

static final LatLng SECC = new LatLng(55.8607,-4.2871);

生成地图

googleMap=((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();

建立标记

Marker secc =googleMap.addMarker(new MarkerOptions().position(SECC)
            .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_MAGENTA))
            .title("SECC").snippet("Exhibition Way, Glasgow, G3 8YW\nSports: Boxing, Gymnastics, Judo, Netball, Wrestling, Weightlifting"));

将点击监听器设置为地图

set the on click listener to the map

googleMap.setOnMarkerClickListener((OnMarkerClickListener)this);

设置自定义信息框

googleMap.setInfoWindowAdapter(new InfoWindowAdapter()
        {
         @Override
         public View getInfoWindow(Marker arg0)
            {
            return null;
             }

         public View getInfoContents(Marker marker)
            {
            View v = getLayoutInflater().inflate(R.layout.marker,null);

            TextView info=(TextView) v.findViewById(R.id.info);

            info.setText("hello");
            return v;
             }
        });

并设置点击事件

googleMap.setOnMarkerClickListener(new OnMarkerClickListener()
        {
          @Override
           public boolean onMarkerClick(Marker marker)
            {
              marker.showInfoWindow();
              return true;
            }
    });

有人可以指出我要去哪里了吗?地图加载完毕,您可以单击一个标记以获取摘要,但自定义信息未显示

Can anyone point out where I'm going wrong? The map loads and you can click on a marker to get a snippet but the custom info isn't displaying

编辑以包含清单

<?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.muc_coursework"
android:versionCode="1"
android:versionName="1.0" >    
 <uses-sdk
    android:minSdkVersion="19"
    android:targetSdkVersion="19" />
<permission
    android:name="org.me.myandroidstuff.mapstuff.permission.MAPS_RECEIVE"
    android:protectionLevel="signature"/>
 <uses-feature
    android:glEsVersion="0x00020000"
    android:required="true"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission          
android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.example.muc_coursework.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <meta-data
    android:name="com.google.android.maps.v2.API_KEY"
    android:value="AIzaSyBFL6EfXODsfCxqyNktI5k9m03rygILej4"/>
    <meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" /> 
</application> 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<fragment 
      android:id="@+id/map"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:name="com.google.android.gms.maps.MapFragment"/>

<?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="vertical">
<TextView 
    android:id="@+id/info"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:gravity="center"/>

推荐答案

下面的代码可能对您有所帮助。

This below code may be helpful to you.

公共类Stacky扩展FragmentActivity实现OnMarkerClickListener {

public class Stacky extends FragmentActivity implements OnMarkerClickListener {

静态最终LatLng SECC =新LatLng(55.8607,-4.2871);
私人GoogleMap mMap;

static final LatLng SECC = new LatLng(55.8607,-4.2871); private GoogleMap mMap;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.basic_demo);


    mMap = ((SupportMapFragment)  getSupportFragmentManager().findFragmentById(R.id.map2)).getMap();
    mMap.setMyLocationEnabled(true);

     setUpMap();
       findSMSLocation();
    // Setting a custom info window adapter for the google map      
    mMap.setInfoWindowAdapter(new InfoWindowAdapter() {

        // Use default InfoWindow frame
        @Override
        public View getInfoWindow(Marker marker)   {                
            return null;
        }           

        // Defines the contents of the InfoWindow
        @Override
        public View getInfoContents(Marker marker) {

            // Getting view from the layout file info_window_layout
            View v = getLayoutInflater().inflate(R.layout.custom_info, null);

                TextView tvLat = (TextView)  v.findViewById(R.id.info);     
                tvLat.setText("info");
                tvLat.setTextColor(Color.GREEN);

            return v;
        }

    });


}

@Override
protected void onPause() {
    super.onPause();

}

@Override
protected void onResume() {
    super.onResume();
    setUpMapIfNeeded();
}


public void findSMSLocation() {
    // TODO Auto-generated method stub
    try{   

          mMap.addMarker(new MarkerOptions().position(SECC).title("SECC").snippet("Exhibition Way, Glasgow, G3 8YW\nSports: Boxing, Gymnastics, Judo, Netball, Wrestling, Weightlifting"));

          mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(SECC, 18.0f));

    }catch(Exception e){

        e.printStackTrace();
    }

}

private void setUpMapIfNeeded() {
    // Do a null check to confirm that we have not already instantiated the map.
    if (mMap == null) {
        // Try to obtain the map from the SupportMapFragment.
        mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map2))
                .getMap();
        mMap.setMyLocationEnabled(true);
        // Check if we were successful in obtaining the map.
        if (mMap != null) {
            setUpMap();
        }
    }
}



private void setUpMap() {
    mMap.getUiSettings().setCompassEnabled(true);
    mMap.getUiSettings().setTiltGesturesEnabled(true);
    mMap.getUiSettings().setRotateGesturesEnabled(true);
    mMap.getUiSettings().setScrollGesturesEnabled(true);
    mMap.getUiSettings().setZoomControlsEnabled(true);
    mMap.getUiSettings().setZoomGesturesEnabled(true);
}

@Override
public boolean onMarkerClick(Marker marker) {
    // TODO Auto-generated method stu
    return false;
}

}

您无需将marker.showInfoWindow()添加到OnMarkerClickListner()界面中。单击n进行标记时,将创建自定义窗口并加载自定义textview。

You do not need to add marker.showInfoWindow() into OnMarkerClickListner() interface.When you click n to marker then Custom window created and load with your custom textview.

这篇关于在地图片段中显示自定义文本,Android的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆