Android Open Source - geoar-app Data Source Point Overlay






From Project

Back to project page geoar-app.

License

The source code is released under:

Apache License

If you think the Android project geoar-app listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/**
 * Copyright 2012 52North Initiative for Geospatial Open Source Software GmbH
 *//w w  w . ja  v  a 2 s . c  o m
 * 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 org.n52.geoar.map.view.overlay;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import org.mapsforge.android.maps.MapView;
import org.mapsforge.android.maps.Projection;
import org.mapsforge.core.GeoPoint;

import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;

import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.geom.Point;

/**
 * 
 * @author Arne de Wall <a.dewall@52North.org>
 * 
 */
public class DataSourcePointOverlay extends
        DataSourceOverlay<Point, PointOverlayType> {

    private final List<PointOverlayType> pointOverlays = Collections
            .synchronizedList(new ArrayList<PointOverlayType>());
    private final Set<Integer> visiblePointOverlays = Collections
            .synchronizedSet(new HashSet<Integer>());

    private Drawable defaultMarker;

    private int left, right, bottom, top;
    private android.graphics.Point itemPosition;
    
    public DataSourcePointOverlay(){
    }

    @Override
    public boolean onLongPress(GeoPoint geoPoint, MapView mapView) {
        return super.onLongPress(geoPoint, mapView);
    }

    @Override
    public boolean onTap(GeoPoint geoPoint, MapView mapView) {
        if(overlayItemTapListener == null)
            return false;
        
        Projection projection = mapView.getProjection();
        android.graphics.Point eventPosition = projection.toPixels(geoPoint,
                null);

        if (eventPosition == null)
            return false;

        android.graphics.Point checkItemPoint = new android.graphics.Point();

        for (Integer index : visiblePointOverlays) {
            PointOverlayType pointOverlay = pointOverlays.get(index);
            if (pointOverlay.getPoint() == null)
                continue;

            checkItemPoint = projection.toPixels(pointOverlay.getPoint(),
                    checkItemPoint);

            Rect markerBounds = pointOverlay.marker.getBounds();
            int checkLeft = checkItemPoint.x + markerBounds.left;
            int checkRight = checkItemPoint.x + markerBounds.right;
            int checkTop = checkItemPoint.y + markerBounds.top;
            int checkBottom = checkItemPoint.y + markerBounds.bottom;

            if (checkRight >= eventPosition.x //
                    && checkLeft <= eventPosition.x
                    && checkBottom >= eventPosition.y
                    && checkTop <= eventPosition.y) {
                overlayItemTapListener.onOverlayItemTap(pointOverlays.get(index));
                return true;
            }
        }

        return false;
    }

    @Override
    protected void drawOverlayBitmap(Canvas canvas,
            android.graphics.Point drawPosition, Projection projection,
            byte zoom) {

        android.graphics.Point pointOverlayPosition = new android.graphics.Point();
        int index = 0;

        visiblePointOverlays.clear();
        for (PointOverlayType pot : pointOverlays) {

            if (zoom != pot.cachedZoomLevel) {
                pot.cachedMapPosition = projection.toPoint(pot.getPoint(),
                        pot.cachedMapPosition, zoom);
                pot.cachedZoomLevel = zoom;
            }

            pointOverlayPosition.x = pot.cachedMapPosition.x - drawPosition.x;
            pointOverlayPosition.y = pot.cachedMapPosition.y - drawPosition.y;

            Rect markerBounds = pot.marker.copyBounds();

            this.left = pointOverlayPosition.x + markerBounds.left;
            this.right = pointOverlayPosition.x + markerBounds.right;
            this.top = pointOverlayPosition.y + markerBounds.top;
            this.bottom = pointOverlayPosition.y + markerBounds.bottom;

            // check boundingbox marker interesects with canvas
            if (this.right >= 0 && this.left <= canvas.getWidth()
                    && this.bottom >= 0 && this.top <= canvas.getHeight()) {
                pot.marker.setBounds(left, top, right, bottom);
                pot.marker.draw(canvas);
                pot.marker.setBounds(markerBounds);

                this.visiblePointOverlays.add(index);
            }

            index++;
        }
    }
    
    @Override
    public void setOverlayTypes(List<PointOverlayType> overlayTypes) {
        this.pointOverlays.clear();
        pointOverlays.addAll(overlayTypes);
    }

    @Override
    public void clear() {
        pointOverlays.clear();
    }

    @Override
    public void removeOverlayType(OverlayType<? extends Geometry> overlayType) {
        this.pointOverlays.remove(overlayType);
        populate();
    }

    @Override
    public void addOverlayType(OverlayType<? extends Geometry> overlaytype) {
        this.pointOverlays.add((PointOverlayType) overlaytype);
        populate();
    }

    @SuppressWarnings("unchecked")
    @Override
    public void addOverlayTypes(
            List<OverlayType<? extends Geometry>> overlaytypes) {
        this.pointOverlays
                .addAll((List<PointOverlayType>) (List<?>) overlaytypes);
        populate();
    }

    @Override
    public List<PointOverlayType> getOverlayTypes() {
        return new ArrayList<PointOverlayType>(pointOverlays);
    }
    
}




Java Source Code List

.DataSourcesOverlay.java
.VisualizationOverlayItem.java
org.n52.geoar.AboutDialog.java
org.n52.geoar.DataSourceListAdapter.java
org.n52.geoar.GeoARActivity.java
org.n52.geoar.GeoARApplication.java
org.n52.geoar.ar.view.ARFragment.java
org.n52.geoar.ar.view.ARObject.java
org.n52.geoar.ar.view.ARView.java
org.n52.geoar.ar.view.DataSourceVisualizationHandler.java
org.n52.geoar.ar.view.IntroController.java
org.n52.geoar.ar.view.IntroViewer.java
org.n52.geoar.ar.view.gl.ARSurfaceViewRenderer.java
org.n52.geoar.ar.view.gl.ARSurfaceView.java
org.n52.geoar.ar.view.gl.GLESCamera.java
org.n52.geoar.ar.view.gl.MultisampleConfigs.java
org.n52.geoar.ar.view.gl.SurfaceTopology.java
org.n52.geoar.ar.view.overlay.ARCanvasSurfaceView.java
org.n52.geoar.ar.view.overlay.GUIDrawable.java
org.n52.geoar.ar.view.overlay.Radar.java
org.n52.geoar.exception.UnsupportedGeometryType.java
org.n52.geoar.map.view.DataSourceOverlayHandler.java
org.n52.geoar.map.view.GeoARMapView.java
org.n52.geoar.map.view.MapActivityContext.java
org.n52.geoar.map.view.MapFragment.java
org.n52.geoar.map.view.overlay.DataSourceOverlay.java
org.n52.geoar.map.view.overlay.DataSourcePointOverlay.java
org.n52.geoar.map.view.overlay.DataSourcePolygonOverlay.java
org.n52.geoar.map.view.overlay.DataSourcePolylineOverlay.java
org.n52.geoar.map.view.overlay.DataSourcesOverlay.java
org.n52.geoar.map.view.overlay.OverlayType.java
org.n52.geoar.map.view.overlay.PointOverlayType.java
org.n52.geoar.map.view.overlay.PolygonOverlayType.java
org.n52.geoar.map.view.overlay.PolylineOverlayType.java
org.n52.geoar.newdata.CheckList.java
org.n52.geoar.newdata.DataCache.java
org.n52.geoar.newdata.DataSourceHolder.java
org.n52.geoar.newdata.DataSourceInstanceHolder.java
org.n52.geoar.newdata.DataSourceInstanceSettingsDialogActivity.java
org.n52.geoar.newdata.InstalledPluginHolder.java
org.n52.geoar.newdata.PluginActivityContext.java
org.n52.geoar.newdata.PluginContext.java
org.n52.geoar.newdata.PluginDialogFragment.java
org.n52.geoar.newdata.PluginDownloadHolder.java
org.n52.geoar.newdata.PluginDownloader.java
org.n52.geoar.newdata.PluginFragment.java
org.n52.geoar.newdata.PluginGridAdapter.java
org.n52.geoar.newdata.PluginHolder.java
org.n52.geoar.newdata.PluginLoader.java
org.n52.geoar.newdata.PluginLogger.java
org.n52.geoar.newdata.PluginStateInputStream.java
org.n52.geoar.newdata.Tile.java
org.n52.geoar.settings.DateTimeSettingsViewField.java
org.n52.geoar.settings.DateUtils.java
org.n52.geoar.settings.NumberSettingsViewField.java
org.n52.geoar.settings.SettingsException.java
org.n52.geoar.settings.SettingsHelper.java
org.n52.geoar.settings.SettingsViewField.java
org.n52.geoar.settings.SettingsView.java
org.n52.geoar.settings.SpinnerSettingsViewField.java
org.n52.geoar.settings.StringSettingsViewField.java
org.n52.geoar.tracking.camera.CameraView.java
org.n52.geoar.tracking.camera.RealityCamera.java
org.n52.geoar.tracking.location.AdaptiveLowPassSensorBuffer.java
org.n52.geoar.tracking.location.LocationHandler.java
org.n52.geoar.tracking.location.LowPassSensorBuffer.java
org.n52.geoar.tracking.location.MeanSensorBuffer.java
org.n52.geoar.tracking.location.SensorBuffer.java
org.n52.geoar.view.InfoView.java
org.n52.geoar.view.geoar.CalibrationControlView.java
org.n52.geoar.view.geoar.Settings.java
org.n52.geoar.view.geoar.gl.mode.BilligerColorShader.java
org.n52.geoar.view.geoar.gl.mode.BilligerLightShader.java
org.n52.geoar.view.geoar.gl.mode.BilligerTextureShader.java
org.n52.geoar.view.geoar.gl.mode.BoundingBox.java
org.n52.geoar.view.geoar.gl.mode.FeatureShader.java
org.n52.geoar.view.geoar.gl.mode.PhongFeatureShader.java
org.n52.geoar.view.geoar.gl.mode.RenderFeature2.java
org.n52.geoar.view.geoar.gl.mode.Spatial.java
org.n52.geoar.view.geoar.gl.mode.TextureFeatureShader.java
org.n52.geoar.view.geoar.gl.mode.Texture.java
org.n52.geoar.view.geoar.gl.mode.features.CubeFeature2.java
org.n52.geoar.view.geoar.gl.mode.features.FlatCircleFeature.java
org.n52.geoar.view.geoar.gl.mode.features.HeightMapFeature.java
org.n52.geoar.view.geoar.gl.mode.features.NewGridFeature.java
org.n52.geoar.view.geoar.gl.mode.features.ReferencedGridFeature.java
org.n52.geoar.view.geoar.gl.mode.features.SphereFeature.java
org.n52.geoar.view.geoar.gl.mode.features.TriangleFeature.java