Yii Framework REST Web Service and Windows Phone 7 sebagai Client (POST Insert Data)

Setelah kemarin kita telah mengupas cara view data suatu aplikasi lewat aplikasi client lain, sekarang saya akan mencoba memaparkan cara input data menggunakan REST dengan aplikasi client yang tentu dalam hal ini saya contohkan dengan menggunakan windows phone 7. Project yang akan kita buat adalah meneruskan project sebelumnya dari postingan ini. Jadi fungsi-fungsi yang telah ada disana tidak akan saya tulis ulang pada postingan ini.

Pertama-tama pada aplikasi yii anda tetap di controller yang sama seperti postingan sebelumnya, buatlah sebuah action yang digunakan untuk menginput nilai lewat REST API.

// digunakan untuk proses input ke database
 public function actionCreate()
 {
   switch($_GET['model'])
   {
       case 'kab': // apabila yang di request adalah "kab", maka akan menginput data pada tabel kabupaten
         $model = new MKab; 
         break;
      default:
         $this->_sendResponse(501,sprintf('Mode <b>create</b> is not implemented for model <b>%s</b>',$_GET['model']) );
        // jika yang di request tidak ada, maka akan error
        Yii::app()->end();
   }
   foreach($_POST as $var=>$value) { // mengecek attribute satu per satu sesuai dengan inputan user
     if($model->hasAttribute($var))
        $model->$var = $value;
     else // jika ada inputan user yang salah, maka akan di tampilkan pesan error
        $this->_sendResponse(500, sprintf('Parameter <b>%s</b> is not allowed for model <b>%s</b>', $var,$_GET['model']) );
   }
   if($model->save()) // jika data berhasil disimpan, maka akan di tampilkan pesan berupa data hasil yang telah disimpan tadi
      $this->_sendResponse(200, CJSON::encode($model)); // mengirim pesan
   else { // jika data tidak berhasil disimpan, maka akan menampilkan pesan error
      $msg = "<h1>Error</h1>";
      $msg .= sprintf("Couldn't create model <b>%s</b>", $_GET['model']);
      $msg .= "<ul>";
      foreach($model->errors as $attribute=>$attr_errors) {
          $msg .= "<li>Attribute: $attribute</li>";
          $msg .= "<ul>";
          foreach($attr_errors as $attr_error)
              $msg .= "<li>$attr_error</li>";
          $msg .= "</ul>";
      }
      $msg .= "</ul>";
      $this->_sendResponse(500, $msg );
    }
 }

Penjelasan dari kode tersebut sudah saya selipkan di baris-baris code di atas.

Nah, setelah selesai membuat action untuk input data, sekarang kita akan membuat sebuah aplikasi client yang digunakan untuk menginput datanya. Bukalah visual studio anda lalu buatlah project windows phone baru. Kemudian buatlah form seperti berikut :

Kita memiliki 3 buah inputan disana yaitu inputan untuk kode daerah, nama daerah dan kode provinsi tersebut. Inputan tersebut sendiri sudah kita sesuaikan dengan model Kabupaten yang ada di dalam aplikasi yii kita. Kemudian karena inputan ini melibatkan 2 buah tabel yaitu tabel kabupaten yang akan diinput dan tabel provinsi yang mana akan berelasi dengan tabel kabupaten, maka kita perlu membuat 2 buah class baru pada aplikasi windows phone kita. Buatlah sebuah folder pada project anda dengan nama “ApiClass” dan buatlah 2 buah class baru yaitu class “Daerah” yang akan mengacu ke tabel provinsi, dan class “Kab” yang akan mengacu ke tabel kabupaten. Lalu pada class daerah masukkan code berikut :

namespace sirusa.ApiClass
{
  public class Daerah
  {
     public string kode_daerah { get; set; }
     public string nama_daerah { get; set; }
  }
}

dan class kab masukkan code berikut :

namespace sirusa
{
  public class Kab
  {
    public int kode_kab { get; set; }
    public string kode_daerah { get; set; }
    public string nama_kab { get; set; }
  }
}

Pada saat pertama kali aplikasi wp7 ini dijalankan, pada inputan provinsi kita menginputnya dengan cara memilih provinsi yang sudah ada pada aplikasi server. Untuk itu, kita harus menyediakan sebuah API untuk mengambil list nama-nama provinsi dari aplikasi server. Untuk ini kita sudah pernah membahas bagaimana cara mengambil data dengan rest pada contoh postingan sebelumnya, silahkan terapkan fungsi tersebut untuk kasus ini..

Kemudian setelah kita telah membuat API untuk mengambil semua provinsi pada server, buatlah sebuah fungsi yang dimana setiap kita membuka aplikasi maka list provinsi yang ada di server langsung muncul di aplikasi wp7 kita. Pada mainpage.xaml.cs masukkan code berikut :

private List<Daerah> daftard = new List<Daerah>();//variabel untuk menyimpan data provinsi, digunakan agar
 // tidak melakukan load berulang kali ke server karena provinsi di anggap tidak terlalu banyak isinya
 // dan tidak sering mengalami perubahan, jadi disimpan di dalam satu variabel saja lebih dahulu
 private void GetDaerah()
 {
   string url = "http://localhost/sirusanew/index.php?r=webapi/list&model=daerah";// api yang di akses
   WebClient req = new WebClient(); 
   req.DownloadStringCompleted += (s, e) =>//jika proses download data selesai
   {
      if (e.Error == null) // jika kondisi tidak error
      {
         if (!string.IsNullOrEmpty(e.Result)) // jika data tidak kosong
            daftard = JsonConvert.DeserializeObject<List<Daerah>>(e.Result); // masukkan data ke dalam variabel daftard
         foreach (Daerah aa in daftard)
         {
            listBox1.Items.Add(aa.nama_daerah); // set data daftard ke dalam listbox
         }
      }
   };
   req.DownloadStringAsync(new Uri(url));
 }

Setelah itu pada constructor buat seperti berikut :

public MainPage()
 {
   InitializeComponent();
   GetDaerah(); // memanggil fungsi getdaerah()
 }

Setelah itu maka pertama kali membuat aplikasi akan muncul list provinsi seperti berikut :

Kemudian saatnya kita membuat fungsi untuk menginput data nya. Pada mainpage.xaml.cs masukkan code berikut :

 // event yang akan di jalankan ketika melakukan klik pada tombol button
 private void button1_Click(object sender, RoutedEventArgs e)
 {
    WebClient webClient = new WebClient();
    webClient.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
    var uri = new Uri("http://localhost/sirusanew/index.php?r=webapi/create&model=kab", UriKind.Absolute);// url yang dituju untuk input data
    StringBuilder postData = new StringBuilder();
    postData.AppendFormat("{0}={1}", "kode_kab", HttpUtility.UrlEncode(textBox2.Text)); // data-data yang akan dismipan dimasukkan ke dalam string
    postData.AppendFormat("&{0}={1}", "nama_kab", HttpUtility.UrlEncode(textBox1.Text));
    postData.AppendFormat("&{0}={1}", "kode_daerah", HttpUtility.UrlEncode(daftard.ElementAt(listBox1.SelectedIndex).kode_daerah));
    webClient.Headers[HttpRequestHeader.ContentLength] = postData.Length.ToString();
    webClient.UploadStringCompleted += new UploadStringCompletedEventHandler(webClient_UploadStringCompleted);
    // jika upload data selesai, maka akan menjalankan event webClient_uploadStringComplete
    webClient.UploadProgressChanged += webClient_UploadProgressChanged;
    // jika upload data dalam progress maka akan menjalankan even webClient_UploadPorgressChanged
    webClient.UploadStringAsync(uri, "POST", postData.ToString()); 
 }
 // event yang dijalankan pada saat upload data selesai
 void webClient_UploadStringCompleted(object sender, UploadStringCompletedEventArgs e)
 {
    MessageBox.Show(e.Result);// menampilkan pesan sesuai yang diberikan dari serve
 }
// event yang dijalankan pada saat upload data dalam progress
 void webClient_UploadProgressChanged(object sender, UploadProgressChangedEventArgs e)
 {
    MessageBox.Show(string.Format("Progress: {0} ", e.ProgressPercentage)); // menampilkan pesan progress
 }

Okeh, selesai.. sekarang saatnya uji coba.. jika sudah benar ketika anda save data makan data yang anda masukkan akan masuk ke server langsung..

Selamat mencoba..

Semoga membantu… 😀

Yii Framework REST Web Service and Windows Phone 7 sebagai Client

Postingan saya terdahulu pernah membahas penerapan web service pada Yii Framework dengan menggunakan SOAP disini. Pada postingan tersebut juga saya memaparkan bagaimana suatu aplikasi client mengakses web service kita yang dimana saya contohkan client dengan menggunakan PHP dan C#. Postingan kali ini juga masih menyangkut web service hanya saja yang saya gunakan bukanlah SOAP tetapi REST. Untuk penjelasan lengkap perbedaan masing-masing metode dapat anda googling aja ya.. Menurut saya sendiri perbedaan umum dari kedua metode tsb adalah SOAP mengizinkan suatu aplikasi mengakses suatu API yang merupakan sebuah fungsi dari server yang menyediakan service, sementara REST lebih kepada mengakses URL dari suatu aplikasi yang menyediakan service.

Artikel yang cukup lengkap tentang penerapan REST pada Yii Framework bisa anda lihat disini (saya juga coba-coba dan nyontek dari sana). Sedangkan postingan kali ini saya hanya terapkan cara mengambil data (mungkin akan ada kelanjutannya pada postingan selanjutnya) dari suatu aplikasi server dengan menggunakan aplikasi lain yang kita sebut sebagai aplikasi client. Pertama misalnya saya ingin mengizinkan aplikasi lain dapat mengakses data master kabupaten dari aplikasi saya dengan menggunakan rest web service. Pertama buatlah sebuah controller baru misal saya beri nama webapiController. Kemudian buatlah sebuah action yang digunakan untuk mengambil data dari suatu model :

// action yang akan di panggil dari apliakasi lain
 public function actionList()
 {
   switch($_GET['model'])
   {
      case 'kab': // jika user request data "kab" maka akan di tampilkan data pada master kabupaten
        $models = Kabupaten::model()->findAll(array('select'=>array('nama_kab','kode_kab')));
        break;
     default: // jika yang di request user tidak ada, maka akan mengirimkan pesan error
        $this->_sendResponse(501, sprintf('Error: Mode <b>list</b> is not implemented for model <b>%s</b>',$_GET['model']) );
      Yii::app()->end();
   }

   if(empty($models)) { // jika tabel yang dituju ada tetapi isi data nya kosong, akan menampilkan pesan error
      $this->_sendResponse(200, 
      sprintf('No items where found for model <b>%s</b>', $_GET['model']) );
   } else {
      $rows = array();
      foreach ($models as $model)
      {
         $rows[] = $model->attributes;// memasukkan semua attribute suatu data ke dalam array
      }
      $this->_sendResponse(200, CJSON::encode($rows));
      // jika data yang diinginakan ada, maka data tersebut akan di convert dalam
      // format json kemudian akan mengirimkan data-data tersebut
    }
 }

Anda dapat melihat penjelasan masing-masing code dari komentar-komentar yang sudah disipkan di code tersebut. Nah, pada code di atas terdapat fungsi $this->_sendResponse yang artinya pada controller ini kita pasti punya sebuah fungsi bernama “_sendResponse”. Maka buatlah sebuah fungsi tersebut :

// digunakan untuk mengirimkan respon pada suatu request
 private function _sendResponse($status = 200, $body = '', $content_type = 'text/html')
 {
    $status_header = 'HTTP/1.1 ' . $status . ' ' . $this->_getStatusCodeMessage($status);
    header($status_header);
    header('Content-type: ' . $content_type);
    if($body != '') // jika data yang ingin dikirim tidak kosong, maka tampilkan data tersebut
    {
      echo $body;
    }
    else // jika data yang ingin dikirim kosong, maka kirim pesan sesuai statusnya.
    {
       $message = ''; // variabel yang digunakan untuk membuat pesan header pada pesan
       switch($status) // mengeset pesan sesuai dengan statusnya
       {
         case 401:
            $message = 'You must be authorized to view this page.';
            break;
        case 404:
            $message = 'The requested URL ' . $_SERVER['REQUEST_URI'] . ' was not found.';
            break;
        case 500:
            $message = 'The server encountered an error processing your request.';
            break;
        case 501:
            $message = 'The requested method is not implemented.';
            break;
       }
       $signature = ($_SERVER['SERVER_SIGNATURE'] == '') ? $_SERVER['SERVER_SOFTWARE'] . ' Server at ' . $_SERVER['SERVER_NAME'] . ' Port ' . $_SERVER['SERVER_PORT'] : $_SERVER['SERVER_SIGNATURE'];
       // signature, pesan-pesan mngenai informasi server

       // pesan yang akan di tampilkan kepada user
       $body = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
          <html>
             <head>
                <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
                <title>' . $status . ' ' . $this->_getStatusCodeMessage($status) . '</title>
             </head>
             <body>
                <h1>' . $this->_getStatusCodeMessage($status) . '</h1>
                <p>' . $message . '</p>
                <hr />
                <address>' . $signature . '</address>
             </body>
          </html>';
       echo $body;
     }
    Yii::app()->end();
 }

penjelasan code tersebut juga ada pada code di atas. Nah, pada code di atas juga ada sebuah fungsi  _getStatusCodeMessage, artinya kita juga harus membuat fungsi tersebut :

// mengembalikan pesan dari suatu request
 private function _getStatusCodeMessage($status)
 {
   $codes = Array(
     200 => 'OK',
     400 => 'Bad Request',
     401 => 'Unauthorized',
     402 => 'Payment Required',
     403 => 'Forbidden',
     404 => 'Not Found',
     500 => 'Internal Server Error',
     501 => 'Not Implemented',
   );
   return (isset($codes[$status])) ? $codes[$status] : '';
 }

Setelah membuat code tersebut, anda sudah selesai membuat rest api nya, dan untuk melihat hasilnya, cobalah mengakses URL berikut di browser anda :

http://localhost/namaaplikasianda/index.php?r=namacontroller/list&model=kab.

Parameter yang perlu anda masukkan adalah nama controllernya, nama action dalam hal ini “actionList”, nama variabel $_GET yang anda kirim beserta isi variabel $_GET nya. Setelah itu akan muncul tampilan seperti berikut :

Gambar di atas adalah hasil yang akan tampil dimana yang akan di tampilkan adalah kumpulan data yang kita ambil dari proses action list tadi. Kemudian bagaimana agar data tersebut data di akses dari aplikasi lain?

Okeh, saya akan memberikan contoh cara mengakses data tersebut dengan menggunakan Windows Phone 7. Anda dapat menggunakan platform apapun untuk mengakses data ini baik dengan PHP, java, iphone, dll asalkan anda menguasainya.. tapi dalam contoh ini saya akan tunjukkan menggunakan windows phone 7 karena kebetulan saya tertarik dengan platform satu ini..

Pertama-tama buatlah sebuah aplikasi baru pada windows phone 7. Karena kita mengolah data json, kita akan memnggunakan sebuah library untuk mempermudah kita mengolahnya dalam windows phone 7. Library tersebut dapat anda download disini, dan masukkan library tersebut ke dalam aplikasi anda dan jangan lupa definisikan ke dalam aplikasi anda dengan memasukkan code berikut pada mainpage.xaml.cs :

using Newtonsoft.Json;

Buatlah sebuah class baru dengan nama Kab.cs dan masukkan ke dalamnya code berikut :

using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
namespace sirusa
{
  public class Kab
  {
     public int kode_kab { get; set; }
     public string kode_daerah { get; set; }
     public string nama_kab { get; set; }
   }
}

Setelah itu pada mainpage.xaml.cs tambahkan sebuah fungsi berikut :

private void GetData()
 {

  string url = "http://localhost/sirusanew/index.php?r=webapi/list&model=kab";
  // definisi url yang akan di akses 
  WebClient req = new WebClient();
  req.DownloadStringCompleted += (s, e) =>
  {
    if (e.Error == null)
    {
       string tt = ""; // nilai yang akan di tampilkan
       if (!string.IsNullOrEmpty(e.Result))
       {
          Kab[] deserializedJSON = JsonConvert.DeserializeObject<Kab[]>(e.Result);
          // konversi nilai json ke dalam class Kab dengan format array karena nilainya bisa lebih dari satu buah
          foreach (var k in deserializedJSON)
          {
             tt += k.nama_kab; // memasukkan nilai nama kabupaten untuk di tampilkan
          }
          MessageBox.Show(tt); // menampilkan nilai yang sudah disimpan tadi
       }
     }
   };
   req.DownloadStringAsync(new Uri(url));
 }

Setelah itu rubah contrstructornya menjadi seperti berikut :

// Constructor
 public MainPage()
 {
   InitializeComponent();
   GetData(); //memanggil fungsi getdata
 }

Jalankan aplikasi anda dan akan tampil seperti berikut :

 

 

Okeh.. selesai…

Selamat mencoba…

Semoga membantu… 😀

[C#] Perhitungan Jarak antara dua titik koordinat

Gara-gara mencari jarak antara 2 koordinat(Latitude, Longitude) jadi tidak tidur 2 hari 2 malam. Ternyata perhitungannya sangat sederhana yaitu menggunakan rumus “Haversine” dimana persamaannya adalah :

Haversine formula: a = sin²(Δlat/2) + cos(lat1).cos(lat2).sin²(Δlong/2)
c = 2.atan2(√a, √(1−a))
d = R.c
dimana R sudah di tentuin yaitu = 6,371 untuk satuan kilometer

Tidak hanya itu saja, ternyata menuangkan rumus ini ke dalam C# cukup sulit, saya memang anti yang namanya Trigonometri tetapi dengan sanggat terpaksa saya harus mengubahnya ke dalam C# sehingga di peroleh seperti ini kira-kira :

public Double Haversine(Double lat1, Double lat2, Double long1, Double long2)
 {
 double dlat = toRad(lat2 - lat1);
 double dlon = toRad(long2 - long1);
 double a = Math.Sin(dlat/2)* Math.Sin(dlat/2) + Math.Sin(dlon / 2) * Math.Sin(dlon/2)*
 Math.Cos(toRad(lat1)) * Math.Cos(toRad(lat2));
 double c = 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a));
 return 6371 * c;
 }

Bukan main senangnya saya setelah bisa melakukan perhitungannya, tapi kesenangan itu tidak cukup lama setelah saya mencoba mengotak-atik program saya, saya ketemu Method GetDistanceTo(), dan setelah saya coba itu sama saja dengan procedure yang saya temukan. Percuma saja saya melakukan perhitungan dengan Haversine kalo ada yang lebih praktis. Tapi tidak apa-apa lah itung-itung menambah pengetahuan.
menggunakan method GetDistanceTo pada C# :

Asal.Location.GetDistanceTo(Tujuan.Location);

Simpel kan? lebih mudah dari rumus Haversine..

SPARTA

Sparta, Short Palembang Route Application..

adalah sebuah aplikasi yang digunakan untuk mencari rute transportasi terpendek kota palembang berdasarkan jarak dan ongkos. Pengguna dapat mengetahui rute yang harus di tempuh dari tempat asal dan tempat tujuan, beserta angkot apa saja yang akan dinaiki dan berapa ongkos yang dibutuhkan pengguna pada rute tersebut..

Hmm, btw aplikasi ini sendiri bukan buatan saya kok. Aplikasi ini sendiri dibuat oleh seorang wanita bernama Fithri Selva Jumeilah yang, hmmm bisa disebut sesuatu saya lah :D.. Dibangun dengan menggunakan platform mobile berbasis Windows Phone 7 Mango dengan bahasa pemrograman C#.

Berikut sedikit gambaran dari aplikasi ini..

Pilih mode pencarian

Pertama kali menggunakan aplikasi ini, pengguna akan disajika tampilan untuk memilih mode pencarian yang akan digunakan pengguna. Mode pencarian sendiri terdapat tiga jenis, yaitu General, Angkutan Umum, dan Transmusi.

  • Mode pencarian general digunakan apabila pengguna ingin mencari rute terpendek dengan menggunakan kendaraan pribadi. Pada mode pencarian ini, aplikasi hanya akan mempertimbangkan pencarian berdasarkan jarak saja. Hal tersebut dikarenakan pada mode pencarian ini tidak dilibatkan angkutan umum, sehingga tidak melakukan pencarian berdasarkan ongkos.
  • Mode pencarian Angkutan umum digunakan apabila pengguna ingin mencari rute terpendek dengan menggunakan angkutan umum seperti angkot dan bus kota. Pada pencarian ini akan dilakukan pencarian berdasarkan jarak dan ongkos, namun tempat yang dihitung berdasarkan ongkos hanya rute  yang di lewati angkutan umum.
  • Mode pencarian Transmusi digunakan apabila pengguna ingin mencari rute terpendek dengan menggunakan angkutan Transmusi Kota Palembang.

Pilih Lokasi Asal dan Tujuan

Setelah memilih mode pencarian pengguna akan diminta memasukkan lokasi asal dan lokasi tujuan dari pencarian yang ingin ia lakukan.

Menampilkan Rute Optimum Lokasi Asal ke Lokasi Tujuan

Setelah memilih lokasi asal dan lokasi tujuan, aplikasi akan menampilkan rute terpendek dari kedua lokasi tersebut.

Menampilkan Rute optimum yang dilewati beserta daftar angkot yang digunakan dan ongkos pada angkot tersebut

Selain menampilkan rute optimum yang dilewati dari peta, aplikasi juga akan menampilkan daftar persimpangan-persimpangan yang dilewati pada rute optimum. Aplikasi juga akan menampilkan angkutan umum apa saja yang akan dilewati, beserta total ongkos yang dikeluarkan untuk melakukan perjalanan tersebut..

Nice application, selamat ya sayang… 😀 Dari semua wanita yang ku kenal,  kamu yang paling jago coding..

 

 

[Windows Phone 7] Mengetahui Koordinat Suatu Alamat Secara Otomatis

Sering kali kita merasa kesulitan mencari posisi suatu alamat pada peta. Terkadang untuk mencari lokasi suatu jalan di suatu kota pun bakal menghabiskan banyak waktu kita dan kita cukup kesulitan mencari dan melihat peta satu persatu. Tapi dengan menggunakan service yang sudah di gunakan oleh Bing Map, kita bisa membuat sebuah aplikasi yang dapat menangkap secara otomatis koordinat suatu alamat. Dan tentu saja untuk mempermudah orang banyak, kita bisa terapkan hal tersebut di dalam sebuah perangkat mobile. Pada kali ini saya akan posting cara-cara membuat aplikasi yang di maksud di Windows Phone 7.

Pertama, buatlah sebuah project “Silverlight Application Phone”, dan buat sebuah project “Windows Phone Application”. Setelah itu, silahkan anda sisipkan sebuah Bing Map control ke dalam aplikasi tersebut, jika anda belum bisa menambahkannya, anda bisa lihat tutorialnya disini. Setelah anda sudah berhasil menambahkan Bing Map control dan menampilkannya di project anda, baru kita akan bahas step by step cara membuat aplikasi yang kita maksud.

Pada “Solution Explore” anda klik kanan “Reference” lalu anda pilih “add Service Reference”. Setelah itu inputan address, masukkan link berikut:

http://dev.virtualearth.net/webservices/v1/geocodeservice/geocodeservice.svc . Setelah itu klik “Go” tunggu hingga aplikasi anda selesai melakukan proses download, dan jika sudah selesai beri nama pada “Namespace” sesuai dengan nama yang anda inginkan, lalu klik “OK”. Setelah itu bukan kembali “MainPage.xaml.cs” lalu tambahkan namespace berikut “using namaProjectAnda.NamaNameSpace”. Setelah selesai, tambahkan code berikut:

        public void GeocodeAddress(string address)
        {
            if (address != String.Empty)
            {
                GeocodeRequest geocodeRequest = new GeocodeRequest();

                geocodeRequest.Credentials = new Credentials();
                geocodeRequest.Credentials.ApplicationId = keyApi;
                geocodeRequest.Query = address;

                GeocodeServiceClient geocodeService = 
                        new GeocodeServiceClient("BasicHttpBinding_IGeocodeService");
                geocodeService.GeocodeCompleted += 
                        new EventHandler<GeocodeCompletedEventArgs>(GeocodeCompleted);

                geocodeService.GeocodeAsync(geocodeRequest);
            }
        }

        void GeocodeCompleted(object sender, GeocodeCompletedEventArgs e)
        {
            if (e.Result.ResponseSummary.StatusCode == 
                     GGeocode.ResponseStatusCode.Success)
            {
                if (e.Result.Results.Count > 0)
                {
                    GeoCoordinate coordinate = e.Result.Results[0].Locations[0];
                    MessageBox.Show(coordinate.Latitude.ToString() + ","
                              + coordinate.Longitude.ToString());
                }
            }
        }

Gunakan fungsi “GeoCodeAddress()” dengan parameter string di dalamnya merupakan nama alamat yang ingin anda cari. Lalu code tersebut akan menampilkan koordinat dari alamat tersebut.. Kurang lebih tampilannya akan seperti berikut:

Input Alamat: Saya contohkan mengetikkan kota kelahiran saya “Palembang” 😀

Output  akan mengeluarkan koordinat pusat kota Palembang:

Tapi tentu tidak semua alamat yang bisa di deteksi oleh Bing Map ini. Tergantung apa yang ada pada database mereka :D. Belum lagi kemungkinan akan ada nya nama yang sama misal “Jalan Jenderal Sudirman”, banyak provinsi di Indonesia yang memiliki nama jalan “Jalan Jenderal Sudirman”. Jadi tidak bisa di pastikan bahwa hasil yang di hasilkan 100% benar.

Nah, agar lebih keren lagi, kita bisa mengarahkan langsung peta yang di tampilkan dengan mengambil koordinat hasil sebagai pusat peta kita. Silahkan anda coba-coba yak, hal ini sudah saya jelaskan di postingan sebelumnya…

Selesai…. Selamat mencoba…

Semoga membantu 😀

Pengaturan sederhana Bing Map pada Windows Phone 7

Biasanya kita ingin mengkonfigurasi tampilan awal Bing map pada aplikasi kita. Berikut adalah beberapa pengaturan sederhana untuk melakukan pengaturan diantaranya pada koordinat mana peta kita akan berpusat, menampilkan tombol zoom in dan zoom out, dan pengaturan zoom default..

Sebelum nya, pastikan anda sudah menambahkan reference nya dengan System.Device. Lalu pada class nya tambahkan

using System.Device.Location;

😀

Ada 2 cara untuk melakukan pengaturan Bing Map pada WP7, satu lewat code nya langsung, dan satu lagi lewat code XAML form nya langsung. Baiklah, kita akan bahas satu persatu..

Yang pertama kita akan coba melakukan pengaturan lewat code di class nya langsung..

Buka mainpage.xaml.cs.

Berikut code untuk melakukan pengaturan Bing map:

            map1.Center = new GeoCoordinate(-2.99103520810604, 104.757377877831);
            map1.ZoomBarVisibility = Visibility.Visible;
            map1.ZoomLevel = 15;
  • Baris pertama digunakan untuk melakukan pengaturan koordinat default pada peta(koordinat di atas saya atur untuk menampilkan peta kota kelahiran saya, Palembang 😀 )
  • Baris kedua digunakan untuk menampilkan tombol zoom in dan zoom out
  • Baris ketiga untuk mengatur tingkat zoom pada peta.
Nah, sedangkan untuk pengaturan langsung lewat code XAML nya, anda bisa merubah tag XAML map nya menjadi seperti berikut:
     <my:Map Height="349" HorizontalAlignment="Left" Margin="9,6,0,0" Name="map1" 
           VerticalAlignment="Top" Width="441" CredentialsProvider="key api anda" 
           Center="-2.99103520810604, 104.757377877831" ZoomBarVisibility="Visible" 
           ZoomLevel="15" />

Selesai, hasil nya nanti akan menjadi seperti berikut:

Yak, disana terlihat peta kota Palembang dan menunjukkan sungai Musi dan Jembatan Ampera :D. Terlihat juga dua buah tombol untuk melakukan zoom in dan zoom out… Tentu anda dapat mencoba pengaturan-pengaturan lainnya. Yang saya paparkan di atas barulah segelintir saja..

Selamat bereksperimen…

Semoga membantu…

Menambahkan Bing Map pada Windows Phone 7

Berikut beberapa cara menambahkan Bing Map Control pada Windows Phone 7, ini sangat mudah dan tidak membutuhkan skill coding 😀 :

  • Buka visual studio express windows phone anda.
  • Pilih “Silverlgith for WindowsPhone 7”
  • Lalu buat sebuah project “Windows Phone Application”
  • Pada “Solution Explorer”, klik kanan pada “References” lalu pilih “Add References”.
  • Setelah itu pada tab “.NET” pilih “Microsoft.Phone.Controls.Masp”.
  • Pada “toolbox” anda akan menemukan control bernama “Map”, drag n drop control tersebut ke dalam form UI.
  • Perlu anda ketahui, untuk dapat mengakses Bing Map, kita harus memasukkan API key yang bisa kita dapatkan dari sini
  • Setelah anda sudah mendapatkan key tersebut, anda harus menyisipkan key tersebut ke dalam aplikasi anda dengan cara menyisipkannya di code WPF anda, sehingga akan jadi seperti berikut:
    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <my:Map Height="349" HorizontalAlignment="Left" Margin="9,6,0,0" Name="map1" 
        VerticalAlignment="Top" Width="441" CredentialsProvider="key anda" />
    </Grid>
    
    Setelah itu silahkan jalankan aplikasi anda.. Hasilnya akan seperti berikut:
    
    Selamat mencoba...
    Semoga membantu :D
%d bloggers like this: