Sunday, January 23, 2011

Class Mapinfo Callback menggunakan Bahasa C#.

Jika kita mendownload applikasi MapBasic disini. Terdapat beberapa sample applikasi untuk menggunakan mepbasic dan applikasi integrated mapping menggunakan MapInfo melalui Bahasa programming (VB, DELPHI dan .NET).
Kemudian setelah dieksplorasi mapinfocallback class untuk applikasi .NET(VB net, C#), ternyata terjadi beberapa error disaat kita menjalankan perintah mapbasic untuk memanggil Dialog Box mapinfo, misal disaat kita ingin menampilkan Temathic Layer dengan perintah "Mapinfoapp.RunMenuCommand(307)", maka akan terjadi stack applikasi.
Untuk mengantisipasi hal ini, berikut beberapa modifikasi mapinfo callback class yang sudah terbukti berjalan baik....

using System;
using System.ComponentModel;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using System.Text;

namespace Master
{
public interface IMapInfoCallback
{
// Methode untuk mamanggil mapinfo callback saat terjadi perubahan pada map window applikasi, misal nambah layer, atau geser map window
        int WindowContentsChanged(UInt32 windowID);


// Metode untuk memanggil mapinfo callback status bar, jadi fungsi status bar di mapinfo akan di embed secara penuh di status bar applikasi kita.
int SetStatusText(string message);
}
public interface ICallbackNotify : ISynchronizeInvoke
{
      
// Metode memanggil class perubahan status bar.
void OnStatusBarTextChanged(string text);


// Metode memanggil class perubahan yang terjadi di map window applikasi.
        void OnWindowContentsChanged(uint windowId);
}


[ClassInterface(ClassInterfaceType.None)]
[ComVisible(true)]
public class MapInfoCallBack : IMapInfoCallback
{
private ICallbackNotify _callbackClient;


public delegate void OnStatusBarTextChangedDelegate(string text);
public OnStatusBarTextChangedDelegate _onStatusBarTextChangedDelegate;

// Variabel yang digunakan untuk menangani error yang terjadi saat pemanggilan dialog box mapinfo, seperti dialog box Temathic layer.
        public static bool aman;


        public delegate void OnWindowContentsChangedDelegate(uint windowId);
        public OnWindowContentsChangedDelegate _onWindowContentsChangedDelegate;


public MapInfoCallBack(ICallbackNotify callbackClient)
{
_callbackClient = callbackClient;


_onStatusBarTextChangedDelegate = new OnStatusBarTextChangedDelegate(_callbackClient.OnStatusBarTextChanged);
            _onWindowContentsChangedDelegate = new OnWindowContentsChangedDelegate(_callbackClient.OnWindowContentsChanged);
}


        public int WindowContentsChanged(uint windowId)
        {
            if (_callbackClient != null)
            {


                if (_callbackClient.InvokeRequired)
                {
                    _callbackClient.Invoke(this._onWindowContentsChangedDelegate, new Object[] { windowId });
                }
                else
                {
                    _callbackClient.OnWindowContentsChanged(windowId);
                }
            }
            return 0;
        }


public int SetStatusText(string text)
{
            if (_callbackClient != null)
            {


                if (aman == true)
                {


                    if (_callbackClient.InvokeRequired)
                    {
                        _callbackClient.Invoke(this._onStatusBarTextChangedDelegate, new Object[] { text });
                    }
                    else
                    {
                        _callbackClient.OnStatusBarTextChanged(text);
                    }
                }
                else
                {
                    _callbackClient.OnStatusBarTextChanged(text);
                }
            }
                    return 0;
}

//Ini metode yang digunakan untuk mendapatkan informasi koordinat object
public void selectkoor(string commandInfo)
        {
            string[] spl = commandInfo.Split(',');
            Form1.sLastUserEventY = spl[1];
            Form1.PostMessage(Form1.hwndMain, Form1.WM_USER, 0, 0);
        }
}
}


mudah-mudahan bisa bermanfaat........

Friday, January 21, 2011

Embedding Mapinfo +COM in C# Programming

Mencoba untuk berbagi berkaitan dengan Source Code dan Design Applikasi Integrated Mapping (GIS).. untuk itu pada menu Integrated Mapping di samping kanan Blog ini, akan memuat semua class applikasi yang dibutuhkan dalam project ini..
Spesifikasi yang digunakan untuk project ini adalah:
  1. Engine Mapping menggunakan MapInfo
  2. Programming Language digunakan C#, dengan tool VS2010.
  3. MapBasic Programming
  4. etc..
Tahap awal penyusunan applikasi Integrated Mapping ini, berupa design nterface applikasi dan koneksi mapinfo serta koneksi database..  Berikut Preview awal Applikasi..

FORM GIS

Google Map di BLOG..

Bagaimana cara menampilkan peta google atau google map di dalam blog. Langkah dan caranya dapat anda ikuti seperti dijelaskan di bawah ini:

  1. Klik di sini. Tentukan lokasi yang ingin anda tampilkan di blog dari peta tersebut anda.
  2. Pilih jenis peta yang anda inginkan. Ada map, ada satellite, ada earth. Untuk melihat dan menampilkan masing-masing jenis peta tersebut, klik saja tiap jenis peta yang ada, maka anda dapat memilih sesuai selera anda.
  3. Klik tulisan link di pojok kanan atas dari peta tersebut. Rubah ukuran tampilan peta agar selaras dengan halaman blog anda dengan klik costumize and preview embedded map. Setelah melakukan perubahan ukuran, copy kode embed yang ada di tekt box dibawah Paste HTML to embed in website.
  4. Paste code embed dari peta google atau google map tadi di posting blog anda. Caranya sama seperti ketika anda memposting artikel-artikel blog anda yang lain.
  5. Enjoy It!
PETA KOTA PADANG


Perbesar Tampilan..