/*************************************************************************
* Copyright (c) 2015 Lemberg Solutions
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
**************************************************************************/
package com.ls.demo.demo1;
import android.app.Activity;
import android.graphics.Point;
import android.graphics.drawable.Drawable;
import android.location.Location;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnLongClickListener;
import android.view.WindowManager;
import android.widget.LinearLayout;
import android.widget.Toast;
import com.ls.widgets.map.MapWidget;
import com.ls.widgets.map.events.MapTouchedEvent;
import com.ls.widgets.map.interfaces.Layer;
import com.ls.widgets.map.interfaces.MapEventsListener;
import com.ls.widgets.map.interfaces.OnLocationChangedListener;
import com.ls.widgets.map.interfaces.OnMapDoubleTapListener;
import com.ls.widgets.map.interfaces.OnMapLongClickListener;
import com.ls.widgets.map.interfaces.OnMapTilesFinishedLoadingListener;
import com.ls.widgets.map.model.MapLayer;
import com.ls.widgets.map.model.MapObject;
import com.ls.widgets.map.utils.GeoUtils;
import com.ls.widgets.map.utils.PivotFactory;
import com.ls.widgets.map.utils.PivotFactory.PivotPosition;
public class Sample2Activity
extends Activity
{
public static final int MAP_ID = 1;
private int currId = 35;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
final MapWidget mapWidget = new MapWidget(savedInstanceState, this, "map", 10);
mapWidget.setSaveEnabled(true);
mapWidget.getConfig().setMinZoomLevelLimit(10);
mapWidget.getConfig().setZoomBtnsVisible(false);
mapWidget.setId(MAP_ID);
// create map layer with specified ID
final long LAYER_ID = 5;
MapLayer layer = mapWidget.createLayer(LAYER_ID);
// getting icon from assets
Drawable icon = getResources().getDrawable(R.drawable.map_icon_attractions);
// define coordinates of icon on map
int x = 200;
int y = 300;
// set ID for the object
final long OBJ_ID = 25;
// adding object to layer
MapObject obj = new MapObject(OBJ_ID, icon, new Point(x, y), PivotFactory.createPivotPoint(icon, PivotPosition.PIVOT_CENTER), true, false);
// obj.setCaption("5434 KNNB");
//MapObject(OBJ_ID, icon, new Point(x, y), PivotFactory.createPivotPoint(icon, PivotPosition.PIVOT_CENTER), true, false)
layer.addMapObject(obj);
LinearLayout layout = (LinearLayout) findViewById(R.id.mainLayout);
layout.setBackgroundColor(0xFFFFFFFF);
layout.addView(mapWidget);
mapWidget.getMapGraphicsConfig().setArrowPointerDrawableId(R.drawable.maps_blue_arrow);
mapWidget.getMapGraphicsConfig().setDotPointerDrawableId(R.drawable.maps_blue_dot);
mapWidget.setOnMapTilesFinishLoadingListener(new OnMapTilesFinishedLoadingListener() {
@Override
public void onMapTilesFinishedLoading() {
mapWidget.zoomIn();
mapWidget.scrollMapTo(1000, 800);
mapWidget.setOnMapTilesFinishLoadingListener(null);
}
});
// mapWidget.setShowMyPosition(true);
mapWidget.addMapEventsListener(new MapEventsListener()
{
@Override
public void onPreZoomOut()
{
// TODO Auto-generated method stub
}
@Override
public void onPreZoomIn()
{
// TODO Auto-generated method stub
}
@Override
public void onPostZoomOut()
{
// TODO Auto-generated method stub
}
@Override
public void onPostZoomIn()
{
// TODO Auto-generated method stub
}
});
mapWidget.setOnLocationChangedListener(new OnLocationChangedListener() {
@Override
public void onLocationChanged(MapWidget v, Location location)
{
v.scrollMapTo(location);
}
});
mapWidget.setOnDoubleTapListener(new OnMapDoubleTapListener() {
@Override
public boolean onDoubleTap(MapWidget v, MapTouchedEvent event) {
Log.d("Sample1Activity", "On double tap");
Location location = addObjetWhereTouched(mapWidget, event, R.drawable.map_icon_attractions);
Toast.makeText(Sample2Activity.this, "New object coords: Lat: " + location.getLatitude() + " Lon:" + location.getLongitude(), Toast.LENGTH_SHORT).show();
return true;
}
});
mapWidget.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View arg0) {
return false;
}
});
mapWidget.setOnMapLongClickListener(new OnMapLongClickListener() {
@Override
public boolean onLongClick(MapWidget v, MapTouchedEvent e) {
if (e.getTouchedObjectIds().size() == 0) {
addObjetWhereTouched(v, e, R.drawable.map_icon_leasure);
} else {
Toast.makeText(Sample2Activity.this, "Layer Id: " + e.getTouchedObjectIds().get(0).getLayerId(), Toast.LENGTH_SHORT).show();
}
return false;
}
});
}
private Location addObjetWhereTouched(final MapWidget mapWidget, MapTouchedEvent event, int iconId) {
// getting icon from assets
Drawable icon = getResources().getDrawable(iconId);
MapObject obj = new MapObject(currId++, icon, new Point(0, 0),
PivotFactory.createPivotPoint(icon, PivotPosition.PIVOT_CENTER), true, false);
Layer layer = mapWidget.getLayerById(5);
layer.addMapObject(obj);
Location location = new Location("custom");
GeoUtils.translate(mapWidget, event.getMapX(), event.getMapY(), location);
obj.moveTo(location);
return location;
}
@Override
protected void onSaveInstanceState(Bundle outState) {
MapWidget map = (MapWidget) findViewById(MAP_ID);
map.saveState(outState);
super.onSaveInstanceState(outState);
}
}