Разработка информационных систем на базе мобильных интерфейсов

Автор работы: Пользователь скрыл имя, 30 Ноября 2013 в 20:08, дипломная работа

Описание работы

Что бы ни говорили, а мобильность сегодня — явление глобальное, проникающее во многие сферы нашей жизни. Почти половина всех пользователей мобильных услуг проживают в пяти странах, среди которых и Россия. Ныне потребитель ищет не просто мобильный телефон, он внимательно изучает условия, соотнося их с требованиями современного рынка. Именно поэтому можно утверждать, что развитие мобильных технологий будет только ускоряться.

Содержание работы

ВВЕДЕНИЕ 5
1. ГОРОДСКИЕ ИНФОРМАЦИОННЫЕ СИСТЕМЫ И МОБИЛЬНЫЕ ИНТЕРФЕЙСЫ 8
1.1 Введение в ГИС 8
1.2 Организация данных в ГИС 11
1.3 ГИС среди информационных технологий 17
1.4 Что ГИС могут сделать для туризма 24
1.5 Предметно ориентированные ГИС 25
1.6 Основные концепции информационной визуализации, используемые в ГИС 25
1.7 ГИС и мобильные интерфейсы 27
2. ГЕОКОДИРОВАНИЕ В ИС 28
2.1 Понятие геокодирования. 28
2.2 Назначение геокодирования 28
2.3 Методы геокодирования 29
3. ОСНОВНЫЕ ТРЕБОВАНИЯ К ТУРИСТИЧЕСКОЙ КАРТЕ 33
4. ИНСТРУМЕНТАЛЬНЫЕ СРЕДСТВА РАЗРАБОТКИ 34
4.1 Операционная система Google Android 34
5. ОПИСАНИЕ ПРОЕКТА ПРИЛОЖЕНИЯ 44
5.1 Структура программы. 44
5.2 Описание компонентов программы 45
5.3 Программная реализация. 58
ЗАКЛЮЧЕНИЕ 68
ЛИТЕРАТУРА 69

Файлы: 1 файл

Diplom__Ba_va__FINAL.doc

— 2.78 Мб (Скачать файл)

@Override

public void onCreate(Bundle savedInstanceState) {

 

super.onCreate(savedInstanceState);

setContentView(R.layout.map);

myMapView = (MapView) findViewById(R.id.mapView);

mapController = myMapView.getController();

myMapView.setStreetView(true);

myMapView.setBuiltInZoomControls(true);

mapOverlays = myMapView.getOverlays();

mapController.setCenter(START_POINT);

mapController.setZoom(12);

 

// Добавляем маркер своего местоположения

positionOverlay = new MyPositionOverlay();

List<Overlay> overlays = myMapView.getOverlays();

overlays.add(positionOverlay);

 

theatres = getResources().getDrawable(R.drawable.h_theatre);

museams = getResources().getDrawable(R.drawable.h_museum);

monuments = getResources().getDrawable(R.drawable.h_memorial);

interestObjects = getResources().getDrawable(R.drawable.h_view_point);

temples = getResources().getDrawable(R.drawable.h_shelter);

hostels = getResources().getDrawable(R.drawable.h_hotel);

 

LocationManager locationManager;

String context = Context.LOCATION_SERVICE;

locationManager = (LocationManager) getSystemService(context);

 

Criteria criteria = new Criteria();

criteria.setAccuracy(Criteria.ACCURACY_FINE);

criteria.setAltitudeRequired(false);

criteria.setBearingRequired(false);

criteria.setCostAllowed(true);

criteria.setPowerRequirement(Criteria.POWER_LOW);

String provider = locationManager.getBestProvider(criteria, true);

 

Location location = locationManager.getLastKnownLocation(provider);

 

updateWithNewLocation(location);

 

locationManager.requestLocationUpdates(provider, 1500, 3,

locationListener);

 

}

 

@Override

public boolean onCreateOptionsMenu(Menu menu) {

menu.add(Menu.NONE, IDM_SETTINGS, Menu.NONE, "POI")

.setAlphabeticShortcut('p');

menu.add(Menu.NONE, IDM_ADD_OBJ, Menu.NONE, "Add objects")

.setAlphabeticShortcut('a');

menu.add(Menu.NONE, IDM_ADD_ROUTE, Menu.NONE, "Route")

.setAlphabeticShortcut('r');

menu.add(Menu.NONE, IDM_SEARCH, Menu.NONE, "Search")

.setAlphabeticShortcut('s');

menu.add(Menu.NONE, IDM_EXIT, Menu.NONE, "Exit").setAlphabeticShortcut(

'x');

return (super.onCreateOptionsMenu(menu));

}

 

@Override

public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) {

case IDM_SETTINGS:

Intent objectsEditorActivity = new Intent(MapsActivity.this, ObjectsEditorActivity.class);

startActivity(objectsEditorActivity);

item.setChecked(true);

break;

case IDM_ADD_OBJ:

showDialog(IDD_OBJECTS);

item.setChecked(true);

break;

case IDM_SEARCH:

LayoutInflater inflater = LayoutInflater.from(this);

View root = inflater.inflate(R.layout.search_menu2, null);

final Button button_addr = (Button) root.findViewById(R.id.button_addr);

final Button button_coord = (Button) root.findViewById(R.id.button_coord);

button_addr.setText("Search by address");

button_coord.setText("Search by coordinates");

AlertDialog.Builder menu = new AlertDialog.Builder(this);

menu.setView(root);

menu.show();

 

button_addr.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

CallSearchAddressDialog();

};

});

button_coord.setOnClickListener(new OnClickListener() {

 

@Override

public void onClick(View v) {

CallSearchCoordDialog();

 

};

 

});  

item.setChecked(true);

break;

case IDM_EXIT:

System.exit(0);

break;

default:

return false;

}

 

return true;

}

 

// Меню с чекбоксами  для добавления групп объектов  на карту

@Override

protected Dialog onCreateDialog(int id) {

switch (id) {

case IDD_OBJECTS:

AlertDialog.Builder builderObj = new AlertDialog.Builder(this);

builderObj.setTitle("Add group objects");

builderObj.setMultiChoiceItems(mObjects, mCheckedObjItems, new DialogInterface.OnMultiChoiceClickListener() {

@Override

public void onClick(DialogInterface dialog, int which, boolean isChecked) {

mCheckedObjItems[which] = isChecked;

}

});

 

builderObj.setPositiveButton("OK", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int id) {

if (!mapOverlays.isEmpty()) {

mapOverlays.clear();

} else {

if (mCheckedObjItems[0]) {

addGroup(ObjectViewProvider.CONTENT_URI, theatres);

}

 

if (mCheckedObjItems[1]) {

addGroup(MuseamProvider.CONTENT_URI, museams);

}

if (mCheckedObjItems[2]) {

addGroup(ArhitectureProvider.CONTENT_URI, monuments);

}

if (mCheckedObjItems[3]) {

addGroup(InterestProvider.CONTENT_URI, interestObjects);

}

if (mCheckedObjItems[4]) {

addGroup(TemplesProvider.CONTENT_URI, temples);

}

if (mCheckedObjItems[5]) {

addGroup(HostelProvider.CONTENT_URI, hostels);

}

}

}

});

 

builderObj.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int id) {

dialog.cancel();

Toast.makeText(getApplicationContext(), "Dialog cancel", Toast.LENGTH_SHORT).show();

}

});

 

builderObj.setCancelable(false);

return builderObj.create();

 

 

// Процедура Добавления группы объектов на карту

private void addGroup(Uri uri, Drawable drawable) {

Cursor cursor = managedQuery(uri, mCoord, "_ID", null, null);

int count = cursor.getCount();

latiC = new double[count];

longC = new double[count];

nameC = new String[count];

for (int i = 0; i < count; i++) {

latiC[i] = -1;

longC[i] = -1;

nameC[i] = "";

}

 

for (int i = 0; i < count; i++) {

cursor.moveToPosition(i);

lat = Double.parseDouble(cursor.getString(2));

lng = Double.parseDouble(cursor.getString(3));

latiC[i] = lat;

longC[i] = lng;

nameC[i] = cursor.getString(1);

}

double nl, nlg;

itemizedOverlay = new HelloItemizedOverlay(this, drawable);

 

try {

for (int i = 0; i < count; i++) {

nl = latiC[i];

nlg = longC[i];

String name = nameC[i];

isAddLocationPoint(nl, nlg, name);

}

} catch (NullPointerException e) {

e.printStackTrace();

}

}

 

// Процедура добавления точки на карту

public void isAddLocationPoint(double netlat, double netlng, String name) {

 

GeoPoint point = new GeoPoint((int) (netlat * 1E6),

(int) (netlng * 1E6));

String coord = "Широта: " + netlat + "\nДолгота: " + netlng;

// Создаем точку и текст  появляющийся при нажатии

OverlayItem overlayitem = new OverlayItem(point, name, coord);

// Положение карты при  запуске в точке point

mapController.animateTo(point);

mapController.setZoom(13);

 

// Добавляем точку на карту

itemizedOverlay.addOverlay(overlayitem);

mapOverlays.add(itemizedOverlay);

 

}

 

    //Процедура поиска по адресу

private void CallSearchAddressDialog() {

        LayoutInflater inflater = LayoutInflater.from(this);

        View root = inflater.inflate(R.layout.search_address, null);

        final EditText textStreet = (EditText)root.findViewById(R.id.street);

        final EditText textHouse = (EditText)root.findViewById(R.id.house);

 

        AlertDialog.Builder b = new AlertDialog.Builder(this);

        b.setView(root);

        b.setTitle("Search by address");

        b.setPositiveButton(

                "Ок", new DialogInterface.OnClickListener() {

           

           public void onClick(DialogInterface dialog, int whichButton) {

             String street = textStreet.getText().toString();

             int house = Integer.parseInt(textHouse.getText().toString());             

             ReadInTxtSearch();

          searchadress(street, house);

          if (latIsc!=0 & lonIsc !=0 ){

           String text = "Широта: " + latIsc + "\nДолгота: "

        + lonIsc;

      Toast.makeText(getBaseContext(), text, Toast.LENGTH_SHORT).show();

           itemizedOverlay = new HelloItemizedOverlay(null, getResources().getDrawable(R.drawable.androidmarker));

           isAddLocationPoint(latIsc, lonIsc, "Искомая точка");

          }

          else {

           String ErrMsg = "Адрес не найден!";

           Toast.makeText(getBaseContext(), ErrMsg, Toast.LENGTH_SHORT).show();

          }

            }

        });

        b.setNegativeButton(

               "Cancel", new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface dialog, int whichButton) {}

        });

        b.show();

    }

 

//Процедура  поиска по координатам

    private void CallSearchCoordDialog() {

        LayoutInflater inflater = LayoutInflater.from(this);

        View root = inflater.inflate(R.layout.search_coord, null);

       

        final EditText textLatitude = (EditText)root.findViewById(R.id.latitude);

        final EditText textLongitude = (EditText)root.findViewById(R.id.longitude);

       

        AlertDialog.Builder b = new AlertDialog.Builder(this);

        b.setView(root);

        b.setTitle("Search by coordinates");

        b.setPositiveButton(

                "Ок", new DialogInterface.OnClickListener() {

           

           public void onClick(DialogInterface dialog, int whichButton) {

             String sslat = textLatitude.getText().toString();

             String sslon = textLongitude.getText().toString();

             double slat = Double.parseDouble(sslat);

             double slon = Double.parseDouble(sslon);

          Drawable SearchCoord = getResources().getDrawable(R.drawable.androidmarker);

          itemizedOverlay = new HelloItemizedOverlay( null, SearchCoord);

             isAddLocationPoint (slat,slon,"искомая точка");

 

            }

        });

        b.setNegativeButton(

               "Cancel", new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface dialog, int whichButton) {}

        });

        b.show();

    }

//Процедура  считывания данных для поиска

private void ReadInTxtSearch()

{

try

{

BufferedReader ibr = new BufferedReader(

     new InputStreamReader(

      new FileInputStream("/mnt/sdcard/insearch.txt"),"windows-1251"));

 

String str;

  Scanner scanner;

  String[] vr;

  sizeSTR=Integer.parseInt(ibr.readLine());

  street = new String [sizeSTR];

house = new int [sizeSTR];

lath = new double [sizeSTR];

lonh = new double [sizeSTR];

vr = new String [4];

int a;

for(int i = 0; i<sizeSTR; i++)

        {

            lath[i]=-1000;

            lonh[i]=-1000;

            street[i]=" ";

            house[i]=-1;

        }

for(int i = 0; i<sizeSTR; i++)

        {

for (int j=0;j<4;j++)

{

vr[j]="";

}

a=0;

            str=ibr.readLine();

            scanner = new Scanner(str);

            while (scanner.hasNext())

            {

            vr[a]=scanner.next();

            a=a+1;

            }

            street[i]=vr[0];

            house[i]=Integer.parseInt(vr[1]);

            lath[i]=Double.parseDouble(vr[2]);

            lonh[i]=Double.parseDouble(vr[3]);

        }

         ibr.close();

    }

    catch(IOException ae){}

};

 

 

 

private void searchadress(String streetIsc, int houseIsc)

{

streetIsc = streetIsc.toLowerCase();

int fl=0, ch=0;

while ((fl==0) & (ch<sizeSTR))

{

if ((streetIsc.equals(street[ch])) & (houseIsc == house[ch]))

{

  latIsc = lath[ch];

  lonIsc = lonh[ch];

  fl=1;

}

ch=ch+1;

}

 

}}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Файл ObjectsEditorActivity.java

package com.touristmap.activities;

 

import com.touristmap.R;

import android.os.Bundle;

import android.app.ListActivity;

import android.content.Intent;

import android.view.View;

import android.widget.ArrayAdapter;

import android.widget.ListView;

 

public class ObjectsEditorActivity extends ListActivity {

/** Called when the activity is first created. */

private int mId = -1;

String[] mObjectsClass = { "Theaters", "Museams", "Monuments",

"Interest Objects", "Temples", "Hostels" };

 

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.objects);

setListAdapter(new ArrayAdapter<String>(this,

android.R.layout.simple_list_item_1, mObjectsClass));

}

 

public void onListItemClick(ListView parent, View v, int position, long id) {

mId = position;

switch (mId) {

case 0: {

Intent intent = new Intent();

intent.setClass(this, TheatersViewActivity.class);

startActivity(intent);

}

break;

case 1: {

Intent intent = new Intent();

intent.setClass(this, MuseamViewActivity.class);

startActivity(intent);

}

break;

case 2: {

Intent intent = new Intent();

intent.setClass(this, ArhitectureViewActivity.class);

startActivity(intent);

}

break;

case 3: {

Intent intent = new Intent();

intent.setClass(this, InterestViewActivity.class);

startActivity(intent);

}

break;

case 4: {

Intent intent = new Intent();

intent.setClass(this, TemplesViewActivity.class);

startActivity(intent);

}

break;

case 5: {

Intent intent = new Intent();

intent.setClass(this, HostelViewActivity.class);

startActivity(intent);

}

break;

}

}

 

}

 

Файл TheatersViewActivity.java

package com.touristmap.activities;

 

import com.touristmap.ObjectDbHelper;

import com.touristmap.R;

import com.touristmap.providers.ObjectViewProvider;

import android.os.Bundle;

import android.app.AlertDialog;

import android.app.ListActivity;

import android.database.Cursor;

import android.view.LayoutInflater;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.ListView;

import android.widget.TextView;

import android.widget.ListAdapter;

import android.widget.SimpleCursorAdapter;

import android.widget.Toast;

import android.content.Intent;

 

public class TheatersViewActivity extends ListActivity {

 

private Cursor mCursor;

private ListAdapter mAdapter;

private String netlat;

private String netlng;

double  lat;

double  lng;

 

 

private static final String[] mContent = new String[] { ObjectDbHelper._ID,

ObjectDbHelper.NAME, ObjectDbHelper.ADDRESS };

 

private static final String[] displayContent = new String[] {

ObjectDbHelper.NAME, ObjectDbHelper.ADDRESS };

 

int[] displayViews = new int[] { R.id.ObjectName, R.id.ObjectAddress };

 

private int infId;

 

 

 

private static final String[] mCoord = new String[] { ObjectDbHelper._ID,

ObjectDbHelper.LAT, ObjectDbHelper.LON };

 

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

 

mCursor = managedQuery(ObjectViewProvider.CONTENT_URI, mContent, null,

null, null);

 

mAdapter = new SimpleCursorAdapter(this, R.layout.object_view, mCursor,

displayContent, displayViews);

setListAdapter(mAdapter);

 

 

}

 

 

 

 

public void onListItemClick(ListView parent, View v, int position, long id) {

infId = position;

 

Cursor cursor = managedQuery(ObjectViewProvider.CONTENT_URI, mCoord,

"_ID", null, null);

cursor.moveToPosition(position);

String text = "Широта: " + cursor.getString(1) + "\nДолгота: "

+ cursor.getString(2);

Toast.makeText(this, text, Toast.LENGTH_SHORT).show();

netlat = cursor.getString(1);

        netlng = cursor.getString(2);

 

LayoutInflater inflater = LayoutInflater.from(this);

View root = inflater.inflate(R.layout.object_menu, null);

final Button button_add = (Button) root.findViewById(R.id.button_add);

final Button button_info = (Button) root.findViewById(R.id.button_info);

final Button button_route = (Button) root.findViewById(R.id.button_route);

button_add.setText("Add on Map");

button_info.setText("Information");

button_route.setText("Construct a route");

AlertDialog.Builder menu = new AlertDialog.Builder(this);

menu.setView(root);

menu.show();

 

button_info.setOnClickListener(new OnClickListener() {

 

@Override

public void onClick(View v) {

CallObjectInfoDialog();

};

 

});

 

button_add.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

CallViewOnMap();

       

};

});

button_route.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

 

       

};

});

 

}

private void CallViewOnMap(){   

 

Intent intent = new Intent();

        intent.setClass(this, ViewObjectOnMapActivity.class);

        intent.putExtra(MapsActivity.NLAT, netlat);

        intent.putExtra(MapsActivity.NLNG, netlng);

        startActivity(intent);

        finish();

}

 

 

private void CallObjectInfoDialog() {

LayoutInflater inflater = LayoutInflater.from(this);

View root = inflater.inflate(R.layout.object_info, null);

final TextView textName = (TextView) root.findViewById(R.id.name);

final TextView textPhone = (TextView) root.findViewById(R.id.address);

 

mCursor.moveToPosition(infId);

textName.setText(mCursor.getString(1));

textPhone.setText(mCursor.getString(2));

 

AlertDialog.Builder b = new AlertDialog.Builder(this);

b.setView(root);

b.show();

}

 

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Файл ObjectViewProvider.java

package com.touristmap.providers;

 

import java.util.HashMap;

import com.touristmap.ObjectDbHelper;

import android.content.ContentProvider;

import android.content.ContentUris;

import android.content.ContentValues;

import android.content.UriMatcher;

import android.database.Cursor;

import android.database.SQLException;

import android.database.sqlite.SQLiteDatabase;

import android.net.Uri;

import android.text.TextUtils;

 

public class ObjectViewProvider extends ContentProvider {

    public static final String DB_OBJECTS = "objects.db";

    public static final Uri CONTENT_URI = Uri.parse("content://com.touristmap.ObjectViewProvider/object");

    public static final int URI_CODE = 1;

    public static final int URI_CODE_ID = 2;

    private static final UriMatcher mUriMatcher;

    private static HashMap<String, String> mObjectMap;

    private SQLiteDatabase db;

 

    static {

        mUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);

        mUriMatcher.addURI("com.touristmap.ObjectViewProvider",

Информация о работе Разработка информационных систем на базе мобильных интерфейсов