İçeriğe geç

Web Servisleri ile Google Map API kullanımı

Android uygulamalarında çok çok işimize yarıyacak olan web servislerini nasıl Google Map API ile kullanırız bize avantajları neler olur haydi gelin öğrenelim.

Örneğin; bir şirkete android projesi yapıyorsunuz ve bu şirket konumu değiştiryor.Bizimde projeden yeni konumunu aktif etmemiz gerekiyor .Bu aktifliği değiştirebilmek için projemin kodlarını açarak belirli yerleri düzenlemek yerine Web servislerini kullanarak veritabanından değiştirmek hem daha kolay hem de daha elverişli olur.

Şimdi bir örnek yaparak anlatmış olduğum uygulamayı yapalım.

1- Veri tabanında googlemap olarak bir tablo oluşturalım bu tablonun içerisine id,title,lot,lat bu değerleri girelim.(Bu değerlerin içerisini verilen şirket konumunu ,adını,girerek dolduralım ben şimdilik ankara konumunu vereceğim.)

2-Google Cloud Platform’dan Bir API KEY alıyoruz.

3-Bu API KEY’i Android Projemize Dahil edelim. Bir Proje oluşturuyoruz Activity Olarak MAPS Activity seçiyoruz.

Values altında google_maps_api.xml ‘e Almış olduğumuz API KEY’i yazıyoruz.

<string name="google_maps_key" templateMergeStrategy="preserve" translatable="false">API KEY</string>

Şimdi Bir Web Servisi yazarak Android projemize dahil etmemiz gerekiyor.

4-İlk olarak Veritabanımıza bağlanmak için gerekli kodu yazmamız gerekiyor.(ayar.php)

<?php

$Servername="localhost";
$username="gamzesi1_1301";// oluşturmuş olduğumuz veritabanı
$sifre="****";
$dbname="*****"; //veritabanı adı
$baglan=mysqli_connect($Servername,$username,$sifre,$dbname);
mysqli_set_charset($baglan,"UTF-8");
mysqli_query($baglan,"SET NAMES UTF8");

?>

Daha sonra veritabanında vermiş olduğumuz değerleri JSON olarak googlemap.php sınıfı ile elde etmiş olucağız.

<?php
include 'ayar.php';
$sql=mysqli_query($baglan,"select * from googlemap ");
$dizi=mysqli_fetch_assoc($sql);
class Map{
public $title ;
public $lot;
public $lat;
}
$map=new Map();
$map->title=$dizi["title"];
$map->lot=$dizi["lot"];
$map->lat=$dizi["lat"];
echo(json_encode($map));
?>

elde etmiş olduğumuz JSON verilerini başarılı bir şekilde alıp almadığımızı kontrol edelim.

Yukarıdaki görselde görüldüğü üzere verileri başarılı şekilde elde etmiş bulunmaktayız.

5-Şimdi bu JSON verileri Android projesine dahil edelim.

JSON verilerini projemize nasıl dahil ediceğimizi detaylı bir şekilde anlattığım yazım aşağıda mevcuttur.

a.) Maps adında bir sınıf açarak JSON verilerimizi giriyoruz.

package com.example.googlemap4;

public class Maps{
private String lot;
private String title;
private String lat;

public void setLot(String lot){
this.lot = lot;
}

public String getLot(){
return lot;
}

public void setTitle(String title){
this.title = title;
}

public String getTitle(){
return title;
}

public void setLat(String lat){
this.lat = lat;
}

public String getLat(){
return lat;
}

@Override
public String toString(){
return
"Maps{" +
"lot = '" + lot + '\'' +
",title = '" + title + '\'' +
",lat = '" + lat + '\'' +
"}";
}
}

b.)RestApi adında bir Interface sınıfı oluşturuyoruz.

public interface RestApi {
@GET("/GoogleMap/googlemap.php")
Call<Maps> MAPS();

}

c.)RestApiClient sınıfımız.

public class RestApiClient {

private RestApi mRestApi;
public RestApiClient(String restApiServiceUrl){
OkHttpClient.Builder builder=new OkHttpClient.Builder()
.readTimeout(30, TimeUnit.SECONDS)
.writeTimeout(30,TimeUnit.SECONDS)
.connectTimeout(3,TimeUnit.SECONDS);

OkHttpClient okHttpClient=builder.build();

Retrofit retrofit=new Retrofit.Builder()
.baseUrl(restApiServiceUrl)
.client(okHttpClient)
.addConverterFactory(GsonConverterFactory.create())
.build();
mRestApi=retrofit.create(RestApi.class);



}
public RestApi getRestApi() {

return mRestApi;

}
}

d.)BaseUrl Sınıfımız.


public class BaseUrl {
public final static String URL="http://www.gamzesirakaya.com";
}

e.)BaseManager Sınıfımız.

public class BaseManager {
protected RestApi getRestApiClient(){
RestApiClient restApiClient=new RestApiClient(BaseUrl.URL);
return restApiClient.getRestApi();


}
}

f.)ManagerAll sınıfımız.

public class ManagerAll extends BaseManager {

private static ManagerAll ourInstance=new ManagerAll();
public static synchronized ManagerAll getInstance(){

return ourInstance;
}
public Call<Maps> getmap(){

Call<Maps> call =getRestApiClient().MAPS();
return call;

}

}

Şimdi MapsActivity classımızda oluşturmuş olduğumuz değerleri nasıl elde ettiğimize bakalım.

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {

    private GoogleMap mMap;
    private Float lot = 34.5f, lat = 35.5f; 
    private String title = "merhaba";
    SupportMapFragment mapFragment;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);

        
        mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        cek();

    }

    public void cek() {

        Call<Maps> req = ManagerAll.getInstance().getmap();
        req.enqueue(new Callback<Maps>() {
            @Override
            public void onResponse(Call<Maps> call, Response<Maps> response) {
                if (response.isSuccessful()) {
                    lat = Float.parseFloat(response.body().getLat().toString());
                    lot = Float.parseFloat(response.body().getLot().toString());
                    title = response.body().getTitle().toString();
                    Log.i("gelen bilgiler", response.body().toString());
                    mapFragment.getMapAsync(MapsActivity.this);
                }
            }

            @Override
            public void onFailure(Call<Maps> call, Throwable t) {

            }
        });

    }

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


        LatLng sydney = new LatLng(lat, lot);
        mMap.addMarker(new MarkerOptions().position(sydney).title(title));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
    }
}

Tabi projemizin çalışabilmesi için internet izini almayı unutmayalım.

<uses-permission android:name="android.permission.INTERNET"/>

Projemizin son hali bu şekildedir.

Tarih:Android Programlama

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir