[OpenLayers-Users] GPS coordinate (GPS from mobile devices),
lonlat and OpenLayers.Icon
Noli Sicad
nsicad at gmail.com
Wed Jul 13 02:02:03 EDT 2011
Hi,
I would like to replace the Geolocate control functionality to reading
from the GPS from mobile devices (e.g. iPhone and iPad 2). Geolocate
html5 is so off from the actual real coordinate (lonLat) like 500
metres away.
How are do I am going to do this in easiest and nicer way?
I am able to get the my current location (i.e. lon and lat values)
from the iPhone/ iPad GPS to HTML DOM (i.e. Textbox).
e.g.
jQTouch with Xcode,
<ul class="edit rounded">
<li>Longitude: <input id='lng' type="text" value='' /></li>
<li>Latitude: <input id='lat' type="text" value='' /></li>
</ul>
Now, the question is, would I be able to get icon from the local
directory, not from http server?
In this example below, it seems that OpenLayers.Icon is retrieved from
http server.
~~~~~~
var icon = new OpenLayers.Icon('http://www.openstreetmap.org/openlayers/img/marker.png',size,offset);
layerMarkers.addMarker(new OpenLayers.Marker(lonLat,icon));
~~~~~~
from, http://wiki.openstreetmap.org/wiki/Openlayers_Track_example
If not, would vector maker good option for this?
In this example, http://openlayers.org/dev/examples/geolocation.html
How can I mapulated this function to cater to the lon and lat values
from the GPS?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
var geolocate = new OpenLayers.Control.Geolocate({
bind: false,
geolocationOptions: {
enableHighAccuracy: false,
maximumAge: 0,
timeout: 7000
}
});
map.addControl(geolocate);
var firstGeolocation = true;
geolocate.events.register("locationupdated",geolocate,function(e) {
vector.removeAllFeatures();
var circle = new OpenLayers.Feature.Vector(
OpenLayers.Geometry.Polygon.createRegularPolygon(
new OpenLayers.Geometry.Point(e.point.x, e.point.y),
e.position.coords.accuracy/2,
40,
0
),
{},
style
);
vector.addFeatures([
new OpenLayers.Feature.Vector(
e.point,
{},
{
graphicName: 'cross',
strokeColor: '#f00',
strokeWidth: 2,
fillOpacity: 0,
pointRadius: 10
}
),
circle
]);
if (firstGeolocation) {
map.zoomToExtent(vector.getDataExtent());
pulsate(circle);
firstGeolocation = false;
this.bind = true;
}
});
geolocate.events.register("locationfailed",this,function() {
OpenLayers.Console.log('Location detection failed');
});
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Any ideas and implementation how to do this?
Thanks.
Regards, Noli
More information about the Users
mailing list