谷歌地图标记信息失败(ANDROID)

时间:2016-09-22 07:18:48

标签: android google-maps google-maps-markers

在我的标记上,我添加了setOnMarkerClickListener。所以这是我的createMethod

protected void createMarker(String driversName, int totalPass, String busNum, double latitude, double longitude, String location) {
    Marker marker = mMap.addMarker(new MarkerOptions()
            .position(new LatLng(latitude, longitude))
            .title(location)
            .snippet("Driver's Name: " + driversName + "\nTotal Passenger: " + totalPass + "\nBus number: " + busNum));
    mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener()
    {
        @Override
        public boolean onMarkerClick(com.google.android.gms.maps.model.Marker marker)
        {
            Toast.makeText(MainMapActivity.this, "hey!", Toast.LENGTH_SHORT).show();
            dialogInfo();
            return true;
        }
    });
}

dialogInfo()

public void dialogInfo() {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Current Location: "+location);
    builder.setMessage("Bus number: "+busNum+"\nDriver's name: "+name+"\nCurrent total passenger: "+totalPassenger)
            .setCancelable(false)
            .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.cancel();
                }
            });
    AlertDialog alertDialog = builder.create();
    alertDialog.show();
}

对话框的值是相同的

1 个答案:

答案 0 :(得分:1)

<强>被修改

您的代码中几乎没有问题,因为我可以看到您的意图(在提问之前请更具体)。

protected void createMarker(GoogleMap mMap,String driversName, int totalPass, String busNum, double latitude, double longitude, String location) {
        Marker marker = mMap.addMarker(new MarkerOptions()
                .position(new LatLng(latitude, longitude))
                .title(location)
                .snippet("Driver's Name: " + driversName + "\nTotal Passenger: " + totalPass + "\nBus number: " + busNum));
                }

在方法之外指定onClickListener

mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener()
        {
            @Override
            public boolean onMarkerClick(com.google.android.gms.maps.model.Marker marker)
            {
                Toast.makeText(MainMapActivity.this, "hey!", Toast.LENGTH_SHORT).show();
                dialogInfo(marker); //get value from marker
                return true;
            }
        });

<强> dialogInfo()

public void dialogInfo(Marker marker) {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle(marker.getTitle());
        builder.setMessage(marker.getSnippet())
                .setCancelable(false)
                .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.cancel();
                    }
                });
        AlertDialog alertDialog = builder.create();
        alertDialog.show();
    }