/*
* Copyright 2014 Google Inc.
*
* 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.google.maps.android.heatmaps;
import com.google.android.gms.maps.model.LatLng;
import com.google.maps.android.geometry.Point;
import com.google.maps.android.projection.SphericalMercatorProjection;
import com.google.maps.android.quadtree.PointQuadTree;
/**
* A wrapper class that can be used in a PointQuadTree
* Created from a LatLng and optional intensity: point coordinates of the LatLng and the intensity
* value can be accessed from it later.
*/
public class WeightedLatLng implements PointQuadTree.Item {
/**
* Default intensity to use when intensity not specified
*/
public static final double DEFAULT_INTENSITY = 1;
/**
* Projection to use for points
* Converts LatLng to (x, y) coordinates using a SphericalMercatorProjection
*/
private static final SphericalMercatorProjection sProjection =
new SphericalMercatorProjection(HeatmapTileProvider.WORLD_WIDTH);
private Point mPoint;
private double mIntensity;
/**
* Constructor
*
* @param latLng LatLng to add to wrapper
* @param intensity Intensity to use: should be greater than 0
* Default value is 1.
* This represents the "importance" or "value" of this particular point
* Higher intensity values map to higher colours.
* Intensity is additive: having two points of intensity 1 at the same
* location is identical to having one of intensity 2.
*/
public WeightedLatLng(LatLng latLng, double intensity) {
mPoint = sProjection.toPoint(latLng);
if (intensity >= 0) mIntensity = intensity;
else mIntensity = DEFAULT_INTENSITY;
}
/**
* Constructor that uses default value for intensity
*
* @param latLng LatLng to add to wrapper
*/
public WeightedLatLng(LatLng latLng) {
this(latLng, DEFAULT_INTENSITY);
}
public Point getPoint() {
return mPoint;
}
public double getIntensity() {
return mIntensity;
}
}