如何发送经度和纬度来映射应用程序以显示地图上的特定坐标?

时间:2012-09-26 09:58:53

标签: android google-maps

我有一个应用程序,其中点击按钮,或更改地点,或在特定时间后,我能够获得经度和纬度值。我想使用此值在Google地图应用程序中显示它们。我打算使用意图来显示位置,但不知何故它没有显示我正在获得的坐标。

5 个答案:

答案 0 :(得分:5)

这是我在其中一个应用中使用的一段代码。此代码还包括检查用户是否在其设备上安装了Google地图。如果检查将应用程序作为安装返回,则该函数会将数据传递给应用程序。如果检查失败,则会显示AlertDialog,通知用户未安装该应用程序。

protected void showMap() {

    boolean installedMaps = false;

    // CHECK IF GOOGLE MAPS IS INSTALLED
    PackageManager pkManager = getPackageManager();
    try {
        @SuppressWarnings("unused")
        PackageInfo pkInfo = pkManager.getPackageInfo("com.google.android.apps.maps", 0);
        installedMaps = true;
    } catch (Exception e) {
        e.printStackTrace();
        installedMaps = false;
    }

    // SHOW THE MAP USING CO-ORDINATES FROM THE CHECKIN
    if (installedMaps == true) {
        String geoCode = "geo:0,0?q=" + PLACE_LATITUDE + ","
                + PLACE_LONGITUDE + "(" + PLACE_NAME + ")";
        Intent sendLocationToMap = new Intent(Intent.ACTION_VIEW,
                Uri.parse(geoCode));
        startActivity(sendLocationToMap);
    } else if (installedMaps == false) {

        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                CheckinsDetails.this);

        // SET THE ICON
        alertDialogBuilder.setIcon(R.drawable.ic_launcher);

        // SET THE TITLE
        alertDialogBuilder.setTitle("Google Maps Not Found");

        // SET THE MESSAGE
        alertDialogBuilder
                .setMessage(R.string.noMapsInstalled)
                .setCancelable(false)
                .setNeutralButton("Got It",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                    int id) {
                                dialog.dismiss();
                            }
                        });

        // CREATE THE ALERT DIALOG
        AlertDialog alertDialog = alertDialogBuilder.create();

        // SHOW THE ALERT DIALOG
        alertDialog.show();
    }
}

下面提到的这行代码会将其发送到Google地图,而不是仅显示 Pin 也会显示位置名称。

String geoCode = "geo:0,0?q=" + PLACE_LATITUDE + ","
                    + PLACE_LONGITUDE + "(" + PLACE_NAME + ")";

编辑:如果您不想显示 PLACE_NAME ,请使用以下代码修改该特定行:geo:latitude,longitude,而不是代码块中使用的那一行。

选中此链接以获取更多可能的组合,例如 zoom http://developer.android.com/guide/appendix/g-app-intents.html

答案 1 :(得分:0)

Double latitud = 37.40*1E6;
            Double longitud = -5.99*1E6;

            GeoPoint loc =
                new GeoPoint(latitud.intValue(), longitud.intValue());

            controlMapa.animateTo(loc);

            int zoomActual = mapa.getZoomLevel();

            for(int i=zoomActual; i<10; i++)
                controlMapa.zoomIn();
        }

其中

 controlMapa = mapa.getController();

      mapa = (MapView)findViewById(R.id.linearLayout1);

了解更多信息:MapView Tutorial

答案 2 :(得分:0)

试试这个:

String url = "http://maps.google.com/maps?daddr="+ ze.getCoordenada().getLatitude() + ","+     ze.getCoordenada().getLongitude();
Intent goZe = new Intent(Intent.ACTION_VIEW);
goZe.setData(Uri.parse(url));
startActivity(goZe);

您将收到使用浏览器或地图的提示

答案 3 :(得分:0)

以某种方式,在Google上使用此字符串

String url = "http://maps.google.com/maps?daddr="+ ze.getCoordenada().getLatitude() + ","+     ze.getCoordenada().getLongitude();

选择谷歌地图时显示网站正确的相反经度和纬度。

也许我正在使用旧版谷歌地图

答案 4 :(得分:0)

public void showMap(long latitude, long longitude) {
    String geoCode = "geo:0,0?q=" + latitude + ","
                        + longitude;
    Intent sendLocationToMap = new Intent(Intent.ACTION_VIEW, Uri.parse(geoCode));
    if (sendLocationToMap.resolveActivity(getPackageManager())!=null){
        startActivity(sendLocationToMap);
    }
    else {
        Toast.makeText(this,"No Application To handle the Request",Toast.LENGTH_SHORT).show();
    }
}