LatLng的标记未显示

时间:2014-04-08 05:37:11

标签: android google-maps

直到我更改了包裹名称,所有设备都在我的设备上工作正常...一旦pkg被更改,相机就不会移动到初始latlng。此外,标记没有显示出来。

package com.vaishnavismeclass.divyadesammap.english;

import com.google.android.gms.common.GooglePlayServicesNotAvailableException;
import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.GoogleMap.OnInfoWindowClickListener;
import com.google.android.gms.maps.GoogleMap.OnMarkerClickListener;
import com.google.android.gms.maps.GoogleMapOptions;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.MapsInitializer;
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;



import android.app.Activity;
import android.content.Intent;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends Activity implements OnMarkerClickListener {


    private GoogleMap mMap;

    /*
     * declaration of all the parameters
     * to display paasurams
     * on a list
     * this will act as query critiera
     */
    public final static String EXTRA_CATEGORY = "com.vaishnavismeclass.divyadesamsmap.englis.CATEGORY";
    public final static String EXTRA_START = "com.vaishnavismeclass.divyadesamsmap.englis.START";
    public final static String EXTRA_ENDING = "com.vaishnavismeclass.divyadesamsmap.englis.ENDING";
    public final static String EXTRA_PASURAMNUMBER = "com.vaishnavismeclass.divyadesamsmap.englis.PASURAMNUMBER";
    public final static String EXTRA_AAYIRAM = "com.vaishnavismeclass.divyadesamsmap.englis.AAYIRAM";
    public final static String EXTRA_AZHWAAR = "com.vaishnavismeclass.divyadesamsmap.englis.AZHWAAR";
    public final static String EXTRA_MANGALASASANAMON = "com.vaishnavismeclass.divyadesamsmap.englis.MANGALASASANAMON";
    public final static String EXTRA_SUBCATEGORY = "com.vaishnavismeclass.divyadesamsmap.englis.SUBCATEGORY";
    public final static String EXTRA_TITLE = "com.vaishnavismeclass.divyadesamsmap.englis.TITLE";

    /*
     * 
     * Define latlng
     * of all the divyadesams
     * with a variable
     */
    static final LatLng lTiruSalagramam= new LatLng(28.816885 , 83.870814);



    /*
     * 
     * Define divyadesam string
     * for passing to the database
     * to query
     */
    static final String mTiruSalagramam = "Tiru Salagramam";


    /*
     * Define markers
     * as divyadesams without ( - and space
     * 
     */
    Marker TiruSalagramam;

    @Override
    public boolean onMarkerClick(Marker marker) {
        Intent intent = new Intent(getApplicationContext(),
                Paasurams.class);
/*
 * Create intent data
 * and pass to respective
 * pages
 */
        Log.d("VC","Marker selected is "+marker.toString());
        if (marker.equals(TiruSalagramam)){intent.putExtra(EXTRA_MANGALASASANAMON,mTiruSalagramam );}


        startActivity(intent);
        return false;
    }

    /* (non-Javadoc)
     * @see android.app.Activity#onCreate(android.os.Bundle)
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

     // Sets the map type to be "hybrid"
        mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
        mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
        /*
         * 
         * Setup my location
         * 
         * 
         */
        if (mMap == null)
            return; // Google Maps not available
        try {
            MapsInitializer.initialize(this);
        }
        catch (GooglePlayServicesNotAvailableException e) {
            Log.e("VC", "Have GoogleMap but then error", e);
            return;
        }
        mMap.setMyLocationEnabled(true);
     // Getting LocationManager object from System Service LOCATION_SERVICE
        LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);

        // Creating a criteria object to retrieve provider
        Criteria criteria = new Criteria();

        // Getting the name of the best provider
        String provider = locationManager.getBestProvider(criteria, true);

        // Getting Current Location
        Location location = locationManager.getLastKnownLocation(provider);

        if(location!=null){
        // Getting latitude of the current location
        double latitude = location.getLatitude();

        // Getting longitude of the current location
        double longitude = location.getLongitude();

        // Creating a LatLng object for the current location
        LatLng latLng = new LatLng(latitude, longitude);

        LatLng myPosition = new LatLng(latitude, longitude);

        mMap.addMarker(new MarkerOptions().position(myPosition).title("Current Location"));

        /*
         * Show the location name
         * on the marker always
         * 
         */
        //TiruSalagramam.showInfoWindow();
        /*
         * Do basic setup if required
         */
        setUpMapIfNeeded();

      //
        GoogleMapOptions options = new GoogleMapOptions();
        options.mapType(GoogleMap.MAP_TYPE_SATELLITE)
        .compassEnabled(true)
        .rotateGesturesEnabled(true)
        .tiltGesturesEnabled(true);
        /*
         * Focus camera to Nagpur
         */
        CameraUpdate center=
                CameraUpdateFactory.newLatLng(new LatLng(21.153889,
                                                         79.083056));
            CameraUpdate zoom=CameraUpdateFactory.zoomTo(4);

            mMap.moveCamera(center);
            mMap.animateCamera(zoom);

        /*
         * customize the marker color
         */

            TiruSalagramam= mMap.addMarker(new MarkerOptions().position(lTiruSalagramam).icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED)).title(mTiruSalagramam));

            mMap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {

                @Override
                public void onInfoWindowClick(Marker marker) {
                    // TODO Auto-generated method stub
                    Intent intent = new Intent(getApplicationContext(),
                            Paasurams.class);
                    if (marker.equals(TiruSalagramam)){intent.putExtra(EXTRA_MANGALASASANAMON,mTiruSalagramam );}

                 startActivity(intent);             


                }

            }
            );
    }

    }

    private void setUpMapIfNeeded() {
        // TODO Auto-generated method stub
         // Do a null check to confirm that we have not already instantiated the map.
        if (mMap == null) {
            mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
                                .getMap();
            // Check if we were successful in obtaining the map.
            if (mMap != null) {
                // The Map is verified. It is now safe to manipulate the map.

            }
        }
    }
    }

我删除了大多数其他标记和相关代码以适应大小。

清单是

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.vaishnavismeclass.divyadesammap.english"
    android:versionCode="2"
    android:versionName="2.2" >

    <permission
        android:name="com.vaishnavismeclass.divyadesammap.english.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="18" />

    <uses-permission android:name="com.vaishnavismeclass.divyadesammap.english.permission.MAPS_RECEIVE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <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.vaishnavismeclass.divyadesammap.english.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>
        <activity
            android:name="com.vaishnavismeclass.divyadesammap.english.Paasurams"
            android:label="Paasurams"
            android:parentActivityName="com.vaishnavismeclass.divyadesammap.english.MainActivity" >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.vaishnavismeclass.divyadesammap.english.MainActivity" />
        </activity>

        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="AIzaSyBWA65v6k62oLOD_20SiGYAo0x01F3OzAU" />
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />
    </application>

</manifest>

3 个答案:

答案 0 :(得分:1)

更改包名称时,请确保生成新密钥并将新密钥复制到android清单,因为要显示映射,使用包名称的密钥。

修改

您遗失<uses-library android:name="com.google.android.maps" /> 并使用

<fragment  
     android:id="@+id/map"
     android:name="com.google.android.gms.maps.MapFragment"
     android:layout_width="fill_parent"
     android:layout_height="match_parent" />

在xml文件中显示地图

答案 1 :(得分:0)

试试吧...... 选择应用程序并转到项目并单击clean,然后构建它......

答案 2 :(得分:0)

试试这个link

link

可能会有所帮助..

Try going to Project -> Properties -> Java Build Path -> Order & Export and ensure Android Private Libraries are checked for your project and for all other library projects you are using. Clean all projects afterwards and see what happens.