首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android: Google片段。在新活动中显示标记信息

Android: Google片段。在新活动中显示标记信息
EN

Stack Overflow用户
提问于 2017-07-11 16:46:20
回答 1查看 687关注 0票数 0

我正在用Google 开发一个应用程序。我创建了一些带有特定信息的标记(例如商店名称、存储地址、电话号码等)。当我单击一个标记时,一个信息窗口将打开所需的信息,但是当我单击信息窗口时,希望在一个新的活动中显示每个标记的信息。我正在使用意图进行一个新的活动。下面是我的代码:

GoogleMapsFragment.java

代码语言:javascript
运行
复制
package com.user.sa.someapp;

import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;

public class GoogleMapsFragment extends Fragment implements OnMapReadyCallback {

private final static int MY_PERMISSION_FINE_LOCATION = 101;

GoogleMap map;

public GoogleMapsFragment() {
    // Required empty public constructor
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragment_google_maps, container, false);
    return v;
}

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    SupportMapFragment mapFragment = (SupportMapFragment)
            getChildFragmentManager().findFragmentById(R.id.map1);
    mapFragment.getMapAsync(this);
}

@Override
public void onMapReady(GoogleMap googleMap) {
    map = googleMap;

    if (map != null) {
        map.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter(){

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

            @Override
            public View getInfoContents(Marker marker) {
                View v = getActivity().getLayoutInflater().inflate(R.layout.infowindow_layout, null);
                TextView storeTitle = (TextView) v.findViewById(R.id.store_title);
                TextView storeSnippet = (TextView) v.findViewById(R.id.store_snippet);
                storeTitle.setText(marker.getTitle());
                storeSnippet.setText(marker.getSnippet());
                return v;
            }
        });
    }

    map.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
        @Override
        public void onInfoWindowClick(Marker marker) {
            Intent intent = new Intent(GoogleMapsFragment.this.getActivity(), DetailedInformation.class);
            startActivity(intent);
        }
    });

    // MARKERS

    LatLng store1 = new LatLng(55.000000, 21.000000);
    map.addMarker(new MarkerOptions().position(store1)
            .title("SOME STORE")
            .snippet("Cool Store \n\n Store address 1, \n\n +370 000 00000 \n\n store1@store1 \n www.example.com")
            .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN))
    );
    map.moveCamera(CameraUpdateFactory.newLatLng(store1));

    if (ActivityCompat.checkSelfPermission(getActivity().getApplicationContext(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
        map.setMyLocationEnabled(true);
    } else {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, MY_PERMISSION_FINE_LOCATION);
        }
    }
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    switch (requestCode) {
        case MY_PERMISSION_FINE_LOCATION:
            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                if (ActivityCompat.checkSelfPermission(getActivity().getApplicationContext(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
                    map.setMyLocationEnabled(true);
                }
            }
            break;
    }
}
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-11 17:04:09

代码语言:javascript
运行
复制
map.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
    @Override
    public void onInfoWindowClick(Marker marker) {
        Intent intent = new Intent(GoogleMapsFragment.this.getActivity(), DetailedInformation.class);
        intent.putExtra("title", marker.getTitle());
        intent.putExtra("snippet", marker.getSnippet());
        startActivity(intent);
    }
});

在详细活动的onCreate方法中:

代码语言:javascript
运行
复制
String title = getIntent().getStringExtra("title");
String snippet = getIntent().getStringExtra("snippet");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45040333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档