現在、マップ V1 の API キーを取得できないため、コードを v2 に移行する必要があります。したがって、ユーザーがマップ上の 1 つのピンをタップしてダイアログ (ポイントの名前とボタンを含む) を表示する必要があります。彼がボタンをタップすると、その場所に関する情報を表示する新しいアクティビティが開きます。コンストラクターでカスタム データを渡したマップ オーバーレイを使用して、これを成功させました。必要なものはすべて揃っています。しかし、マップv2のマーカーを使用してこれを行うにはどうすればよいでしょうか? カスタム ダイアログについて何も見つかりません。
1182 次
3 に答える
0
すべてのコンテンツを画像に自動的にレンダリングするためInfoWindow
、ボタンで実装する方法はありません。Google Map
クリック音を聞くことができるのは、InfoWindow
それ自体だけです。
を作成し、手順を説明するコメントをInfoWindow
割り当てるためのコードを次に示します。OnInfoWindowClickListener
// Setting a custom info window adapter for the google map
map.setInfoWindowAdapter(new InfoWindowAdapter() {
// Use default InfoWindow frame
@Override
public View getInfoWindow(Marker args) {
return null;
}
// Defines the contents of the InfoWindow
@Override
public View getInfoContents(Marker args) {
// Getting view from the layout file info_window_layout
View v = getLayoutInflater().inflate(R.layout.info_window_layout, null);
// Getting the position from the marker
clickMarkerLatLng = args.getPosition();
TextView title = (TextView) v.findViewById(R.id.tvTitle);
title.setText(args.getTitle());
//Setting OnInfoWindowClickListener
map.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
public void onInfoWindowClick(Marker marker)
{
if (SGTasksListAppObj.getInstance().currentUserLocation!=null)
{
if (String.valueOf(SGTasksListAppObj.getInstance().currentUserLocation.getLatitude()).substring(0, 8).contains(String.valueOf(clickMarkerLatLng.latitude).substring(0, 8)) &&
String.valueOf(SGTasksListAppObj.getInstance().currentUserLocation.getLongitude()).substring(0, 8).contains(String.valueOf(clickMarkerLatLng.longitude).substring(0, 8)))
{
Toast.makeText(getApplicationContext(), "This your current location, navigation is not needed.", Toast.LENGTH_SHORT).show();
}
else
{
FlurryAgent.onEvent("Start navigation window was clicked from daily map");
tasksRepository = SGTasksListAppObj.getInstance().tasksRepository.getTasksRepository();
for (Task tmptask : tasksRepository)
{
String tempTaskLat = String.valueOf(tmptask.getLatitude());
String tempTaskLng = String.valueOf(tmptask.getLongtitude());
Log.d(TAG, String.valueOf(tmptask.getLatitude())+","+String.valueOf(clickMarkerLatLng.latitude).substring(0, 8));
if (tempTaskLat.contains(String.valueOf(clickMarkerLatLng.latitude).substring(0, 8)) && tempTaskLng.contains(String.valueOf(clickMarkerLatLng.longitude).substring(0, 8)))
{
task = tmptask;
break;
}
}
Intent intent = new Intent(getApplicationContext() ,RoadDirectionsActivity.class);
intent.putExtra(TasksListActivity.KEY_ID, task.getId());
startActivity(intent);
}
}
else
{
Toast.makeText(getApplicationContext(), "Your current location could not be found,\nNavigation is not possible.", Toast.LENGTH_SHORT).show();
}
}
});
// Returning the view containing InfoWindow contents
return v;
}
});
于 2013-04-22T08:40:04.000 に答える
0
を使用してマーカーを追加できます
Marker marker = mMap.addMarker(new MarkerOptions().position(pos1).title("title").snippet("description"));
マーカーをタップすると、「タイトル」と「説明」を含む情報ウィンドウが開きます。InfoWindowAdapter クラスを拡張してこの情報ウィンドウをカスタマイズし、その infoWindowAdapter を GoogleMap obj に設定することもできます。詳細については、以下のリンクを参照してください Google Map API V2
于 2013-04-22T08:46:34.543 に答える
0
カスタム ダイアログとマップ自体は 2 つの完全に別個のエンティティであり、一方の開発が他方の開発に影響を与えることはありません。
OnMarkerClickListener (ドキュメントへのリンクはこちら) を使用し、それを受け取るたびに、以前と同じようにカスタム ダイアログを作成します。
于 2013-04-22T08:43:14.787 に答える