问题描述
好吧,我整天都在这儿,我放弃了尝试自己弄这个!
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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!