Autore Topic: Come applicare lo zoom alla mappa  (Letto 960 volte)

Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
Come applicare lo zoom alla mappa
« il: 15 Marzo 2014, 23:20:57 CET »
0
Tramite un'actvity visualizzo la mappa di google, sulla mappa visualizzo un market ad un determinato indirizzo, funziona tutto ma la mappa ha uno zoom troppo ampio, volevo visualizzare il punto evidenziato dal market in maniera più dettagliata, ho provato ad applicare lo zoom ma non succede niente, dove sbaglio?

Codice (Java): [Seleziona]
                                Geocoder coder = new Geocoder(this);
                                List<Address> address;

                                try {
                                        int maxResult = 5;
                                        String strAddress = "via battaglia dei giganti 7, 20100, Melegnano";
                                        address = coder.getFromLocationName(strAddress, maxResult);
                                        System.out.println("address: "+address);
                                        if (address != null) {

                                                Address location = address.get(0);

                                                LatLng streetLatLng = new LatLng(location.getLatitude(),
                                                                location.getLongitude());
                                                Marker hamburg = googleMap
                                                                .addMarker(new MarkerOptions()
                                                                                .position(streetLatLng).title(strAddress));

                                                //Applico lo ZOOM ma non succede niente alla mappa
                                                LatLngBounds streetLatLngBounds = new LatLngBounds(
                                                                  new LatLng(location.getLatitude()-20, location.getLatitude()+20),
                                                                 new LatLng(location.getLongitude()-20, location.getLongitude()+20));
                                                googleMap.moveCamera(CameraUpdateFactory.newLatLngBounds(streetLatLngBounds, 0));
                                               
                                        }
                                } catch (Exception e) {
                                        e.printStackTrace();
                                }

Offline white$hark

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Nexus4
  • Sistema operativo:
    Windows 7
Re:Come applicare lo zoom alla mappa
« Risposta #1 il: 16 Marzo 2014, 11:02:54 CET »
0
Usa questo:

Codice (Java): [Seleziona]
        CameraPosition cameraPosition = new CameraPosition.Builder()
                        .target(hamburg).zoom(18).build();

Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
Re:Come applicare lo zoom alla mappa
« Risposta #2 il: 17 Marzo 2014, 00:27:54 CET »
0
ciao99 anche mettendo le tue righe di codice non succede nulla, vedo il market sulla mappa ma lontanissimo, manca lo zoom

praticamente vedo tutta l'europa e tutta l'africa, con il market che punta sull'italia
se oommo a mano si vede il market posizionato correttamente sulla via
vorrei evitare di fare lo zoom manuale ma che appena si apre la mappa, venga zoomato sulla strada

Offline white$hark

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Nexus4
  • Sistema operativo:
    Windows 7
Re:Come applicare lo zoom alla mappa
« Risposta #3 il: 17 Marzo 2014, 10:18:55 CET »
0
Prova ad inserirlo nell'onCreate()

Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
Re:Come applicare lo zoom alla mappa
« Risposta #4 il: 17 Marzo 2014, 14:44:54 CET »
0
il codice si trova già nell'oncreate

Codice (Java): [Seleziona]
package it.test.googlemap.activity;

import it.test.googlemap.R;
import it.test.googlemap.Constants;

import java.util.List;

import android.app.Activity;
import android.content.Context;
import android.location.Address;
import android.location.Geocoder;
import android.os.Bundle;
import android.widget.Toast;

import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.LatLngBounds;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;

public class ShowAddressOnMapsActivity extends Activity {
        private Context context;

        private GoogleMap googleMap;

        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.show_address_onmap_layout);

                context = getApplicationContext();

                try {
                        // Loading map
                        initilizeMap();

                } catch (Exception e) {
                        e.printStackTrace();
                }

        }

        private void initilizeMap() {
                if (googleMap == null) {
                        googleMap = ((MapFragment) getFragmentManager().findFragmentById(
                                        R.id.map)).getMap();

                        // check if map is created successfully or not
                        if (googleMap == null) {
                                Toast.makeText(context, "Sorry! unable to create maps",
                                                Toast.LENGTH_SHORT).show();
                        } else {
                                Geocoder coder = new Geocoder(this);
                                List<Address> address;

                                try {
                                        int maxResult = 5;
                                        String strAddress = "via Battaglia dei Giganti 7, 20100, Melegnano";
                                        address = coder.getFromLocationName(strAddress, maxResult);
                                        System.out.println("address: " + address);
                                        if (address != null) {

                                                Address location = address.get(0);

                                                LatLng streetLatLng = new LatLng(
                                                                location.getLatitude(), location.getLongitude());
                                                Marker myMarker = googleMap
                                                                .addMarker(new MarkerOptions().position(
                                                                                streetLatLng).title(strAddress));

                                                CameraPosition cameraPosition = new CameraPosition.Builder()
                                                                .target(streetLatLng).zoom(18).build();
                                        }
                                } catch (Exception e) {
                                        e.printStackTrace();
                                }
                        }
                }
        }

}
« Ultima modifica: 18 Marzo 2014, 14:20:51 CET da andream1977 »

Offline white$hark

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Nexus4
  • Sistema operativo:
    Windows 7
Re:Come applicare lo zoom alla mappa
« Risposta #5 il: 17 Marzo 2014, 15:36:39 CET »
0
Allora, nel tuo onCreate non fai altro che prendere il contesto ed inizializzare la mappa.

Per avere lo zoom sul tuo punto prova ad usare questo codice:

Codice (Java): [Seleziona]
public class ShowAddressOnMapsActivity extends FragmentActivity {

        private GoogleMap googleMap;
        LatLng STARTING_POINT = new LatLng(45.362917, 9.324294); //il tuo marker

        CameraPosition cameraPosition = new CameraPosition.Builder()
                        .target(STARTING_POINT).zoom(18).build();

        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.map_activity);

                googleMap = ((SupportMapFragment) getSupportFragmentManager()
                                .findFragmentById(R.id.map)).getMap();

                googleMap.addMarker(new MarkerOptions().position(STARTING_POINT).title(
                                "ciao"));

               
                animazione();

        }

        private void animazione() {

                googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(STARTING_POINT,
                                5));

                googleMap.animateCamera(CameraUpdateFactory
                                .newCameraPosition(cameraPosition));

        }
}

Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
Re:Come applicare lo zoom alla mappa
« Risposta #6 il: 18 Marzo 2014, 00:06:14 CET »
0
ciao99 come mi hai suggerito ho aggiunto queste linee di codice alle mie:

Codice (Java): [Seleziona]
CameraPosition cameraPosition = new CameraPosition.Builder().target(streetLatLng).zoom(18).build();

googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(streetLatLng, 5));

googleMap.animateCamera(CameraUpdateFactory     .newCameraPosition(cameraPosition));

niente da fare, lo zoom non viene effettuato

Offline white$hark

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Nexus4
  • Sistema operativo:
    Windows 7
Re:Come applicare lo zoom alla mappa
« Risposta #7 il: 18 Marzo 2014, 10:37:33 CET »
0
A me funziona così com'è.  Posta tutto il codice

Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
Re:Come applicare lo zoom alla mappa
« Risposta #8 il: 18 Marzo 2014, 14:18:40 CET »
0
ecco tutto il codice compreso di xml

Codice (Java): [Seleziona]
package it.test.googlemap;

import it.test.googlemap.R;
import it.test.googlemap.Constants;

import java.util.List;

import android.app.Activity;
import android.content.Context;
import android.location.Address;
import android.location.Geocoder;
import android.os.Bundle;
import android.widget.Toast;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

public class ShowAddressOnMapsActivity extends Activity implements Constants {
        private Context context;

        private GoogleMap googleMap;


        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.show_address_onmap_layout);

                context = getApplicationContext();

                try {
                        // Loading map
                        initilizeMap();

                } catch (Exception e) {
                        e.printStackTrace();
                }

        }

        /**
         * function to load map. If map is not created it will create it for you
         * */

        private void initilizeMap() {
                if (googleMap == null) {
                        googleMap = ((MapFragment) getFragmentManager().findFragmentById(
                                        R.id.map)).getMap();

                        // check if map is created successfully or not
                        if (googleMap == null) {
                                Toast.makeText(context, "Sorry! unable to create maps",
                                                Toast.LENGTH_SHORT).show();
                        } else {
                                Geocoder coder = new Geocoder(this);
                                List<Address> address;

                                try {
                                        int maxResult = 5;
                                        String strAddress = "via Battaglia dei Giganti 7, 20100, Melegnano";
                                        address = coder.getFromLocationName(strAddress, maxResult);
                                        System.out.println("address: " + address);
                                        if (address != null) {

                                                Address location = address.get(0);

                                                LatLng streetLatLng = new LatLng(
                                                                location.getLatitude(), location.getLongitude());
                                                googleMap
                                                                .addMarker(new MarkerOptions().position(
                                                                                streetLatLng).title(strAddress));



                                                CameraPosition cameraPosition = new CameraPosition.Builder()
                                                                .target(streetLatLng).zoom(18).build();

                                                googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(
                                                                streetLatLng, 5));

                                                googleMap.animateCamera(CameraUpdateFactory
                                                                .newCameraPosition(cameraPosition));
                                        }
                                } catch (Exception e) {
                                        e.printStackTrace();
                                }
                        }
                }
        }

}

show_address_onmap_layout.xml
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/show_address_onmap_layout_id"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent" >

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

</RelativeLayout>

Post unito: 18 Marzo 2014, 14:39:35 CET
ciao99 lascia stare, ho rilanciato oggi l'app e lo zoom funziona, io non ho toccato niente, oggi funziona, meglio così
grazie di tutto
« Ultima modifica: 18 Marzo 2014, 14:39:35 CET da andream1977, Reason: Merged DoublePost »